I've tried to figure out a bit more what is going on by adding prints along the call stack. It looks like it's the `base::CallOnce` in `code-range.cc` introduced in commit 26bc8bb4 that is the problem. Here the code with the added prints: V8_DECLARE_ONCE(init_code_range_once); void InitProcessWideCodeRange(v8::PageAllocator* page_allocator, size_t requested_size) { i::PrintF(stdout, "InitProcessWideCodeRange %u\n", requested_size); CodeRange* code_range = new CodeRange(); if (!code_range->InitReservation(page_allocator, requested_size)) { V8::FatalProcessOutOfMemory( nullptr, "Failed to reserve virtual memory for CodeRange"); } process_wide_code_range_ = code_range; #ifdef V8_EXTERNAL_CODE_SPACE #ifdef V8_COMPRESS_POINTERS_IN_SHARED_CAGE ExternalCodeCompressionScheme::InitBase( ExternalCodeCompressionScheme::PrepareCageBaseAddress( code_range->base())); #endif // V8_COMPRESS_POINTERS_IN_SHARED_CAGE #endif // V8_EXTERNAL_CODE_SPACE } } // namespace
// static CodeRange* CodeRange::EnsureProcessWideCodeRange( v8::PageAllocator* page_allocator, size_t requested_size) { i::PrintF(stdout, "CodeRange::EnsureProcessWideCodeRange %u\n", requested_size); base::CallOnce(&init_code_range_once, InitProcessWideCodeRange, page_allocator, requested_size); return process_wide_code_range_; } It outputs: CodeRange::EnsureProcessWideCodeRange 536870912 InitProcessWideCodeRange 2034756544 It looks like the `requested_size` isn't forwarded correctly in `base::CallOnce`. I'm not sure to understand the CallOnce implementation, but I wonder if calling `std::function<void()>` with `init_func(args...)` isn't undefined behavior. Not sure how to fix/work around. On Wed, Aug 9, 2023, at 8:03 AM, Jakob Gruber wrote: > > > On Tue, Aug 8, 2023 at 3:20 PM Jean-Claude Monnin <jc_mon...@emailplus.org> > wrote: >> __ >> Hi Jakob, >> >> Thanks for your reply. >> It looks like using Microsoft's C++ library instead of libc++ is somewhat >> exotic for v8. Unfortunately there are cases where it's almost impossible to >> switch to libc++. >> >> Since I have a chance to get some feedback here of how to address this >> issue, I'm going to try to give you as much info as possible. >> >> `mksnapshot.exe` aborts at `VirtualMemoryCage::InitReservation` at following >> check: >> CHECK(IsAligned(params.reservation_size, allocate_page_size)); >> >> When adding following print on the line before >> i::PrintF(stdout, "VirtualMemoryCage::InitReservation %u %u\n", >> params.reservation_size, allocate_page_size); >> it prints >> VirtualMemoryCage::InitReservation 3356617664 65536 >> It looks like the supplied `params.reservation_size` is not aligned. > > Thanks for the investigation, very helpful. I wonder where that > reservation_size comes from. It doesn't look like any value we'd set in V8. > Corrupted? Uninitialized? > > I'd expect it to be set by mksnapshot here > <https://source.chromium.org/chromium/chromium/src/+/refs/heads/main:v8/src/snapshot/mksnapshot.cc;l=282;drc=a9163a67bbe920dfcfa6286bf0d172a1af377dba> > and picked up by isolate initialization here > <https://source.chromium.org/chromium/chromium/src/+/refs/heads/main:v8/src/heap/heap.cc;l=5420;drc=a9163a67bbe920dfcfa6286bf0d172a1af377dba>. > There it should either be some reasonable aligned value, or 0 and we'd fall > back to kMaximalCodeRangeSize. > >> >> >> Full call stack is included in screenshot below (sorry for the screenshot, I >> couldn't find a way to copy text from WinDbg) >> >> I'm happy to investigate further, but wanted to send this out in case there >> is anything specific that would be helpful. >> >> Jean-Claude >> >> On Tue, Aug 8, 2023, at 12:13 PM, Jakob Gruber wrote: >>> Hi Jean-Claude, >>> >>> no, we don't have a lot of test coverage for `use_custom_libcxx=false`, >>> this mode is only supported on a best-effort basis. >>> >>> For debugging: a backtrace and symbols would be useful. Does running >>> `mksnapshot` in a debugger give more infos? Also, a bisect to find the >>> culprit change would be very helpful. >>> >>> On Thu, Aug 3, 2023 at 6:54 PM Jean-Claude Monnin <jc_mon...@emailplus.org> >>> wrote: >>>> Hi, >>>> >>>> On windows, the v8 version 11.5 build fails when generating the snapshot >>>> with following error: >>>> >>>> C:/Users/jean-claude/Documents/src/google/depot_tools/bootstrap-2@3_8_10_chromium_26_bin/python3/bin/python3.exe >>>> ../../tools/run.py ./mksnapshot --turbo_instruction_scheduling >>>> --target_os=win --target_arch=x64 --embedded_src gen/embedded.S >>>> --embedded_variant Default --random-seed 314159265 --startup_blob >>>> snapshot_blob.bin --no-native-code-counters >>>> Return code is 2147483651 <tel:(214)%20748-3651> >>>> >>>> These are the options used (args.gn): >>>> is_official_build = true >>>> target_cpu = "x64" >>>> is_component_build = true >>>> use_custom_libcxx = false >>>> chrome_pgo_phase = false >>>> treat_warnings_as_errors = false >>>> fatal_linker_warnings = false >>>> symbol_level = 0 >>>> >>>> When using `is_debug=false` instead of `is_official_build = true` it >>>> builds fine, but it comes with performance regressions compared to older >>>> version 9.3 build with `is_official_build = true`. >>>> >>>> If using either `is_component_build = false` or `use_custom_libcxx = >>>> true`, it builds fine too, however it's not really an option as I need a >>>> dll build and I need to use Microsoft's C++ standard library because third >>>> party dependencies prevents us to use libc++. >>>> >>>> I also tried version 11.4 and 11.6 and they give the same error. >>>> >>>> Any hints in how to diagnose/fix that would be appreciated. >>>> >>>> Auxiliary question: Is any big project using `use_custom_libcxx = false` >>>> (eg. Microsoft's C++ standard library), or is this untested? >>>> Chrome/node/deno all use libc++? >>>> >>>> Best regards, >>>> Jean-Claude >>>> >>>> -- >>>> -- >>>> v8-users mailing list >>>> v8-users@googlegroups.com >>>> http://groups.google.com/group/v8-users >>>> --- >>>> You received this message because you are subscribed to the Google Groups >>>> "v8-users" group. >>>> To unsubscribe from this group and stop receiving emails from it, send an >>>> email to v8-users+unsubscr...@googlegroups.com >>>> <mailto:v8-users%2bunsubscr...@googlegroups.com>. >>>> To view this discussion on the web visit >>>> https://groups.google.com/d/msgid/v8-users/984f3518-4b8e-4403-b794-923be66ccf08%40app.fastmail.com. >>> >>> >>> -- >>> -- >>> v8-users mailing list >>> v8-users@googlegroups.com >>> http://groups.google.com/group/v8-users >>> --- >>> You received this message because you are subscribed to the Google Groups >>> "v8-users" group. >>> To unsubscribe from this group and stop receiving emails from it, send an >>> email to v8-users+unsubscr...@googlegroups.com. >>> To view this discussion on the web visit >>> https://groups.google.com/d/msgid/v8-users/CAH3p7oO%2BEkjhuGaa9nXVWHd9Da3W4h0mr3ychCWu4J3gqRut8Q%40mail.gmail.com >>> >>> <https://groups.google.com/d/msgid/v8-users/CAH3p7oO%2BEkjhuGaa9nXVWHd9Da3W4h0mr3ychCWu4J3gqRut8Q%40mail.gmail.com?utm_medium=email&utm_source=footer>. >> >> >> >> -- >> -- >> v8-users mailing list >> v8-users@googlegroups.com >> http://groups.google.com/group/v8-users >> --- >> You received this message because you are subscribed to the Google Groups >> "v8-users" group. >> To unsubscribe from this group and stop receiving emails from it, send an >> email to v8-users+unsubscr...@googlegroups.com. >> To view this discussion on the web visit >> https://groups.google.com/d/msgid/v8-users/7d4484d9-13bd-4f86-be64-79b12abc0ec9%40app.fastmail.com >> >> <https://groups.google.com/d/msgid/v8-users/7d4484d9-13bd-4f86-be64-79b12abc0ec9%40app.fastmail.com?utm_medium=email&utm_source=footer>. > > > -- > -- > v8-users mailing list > v8-users@googlegroups.com > http://groups.google.com/group/v8-users > --- > You received this message because you are subscribed to the Google Groups > "v8-users" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to v8-users+unsubscr...@googlegroups.com. > To view this discussion on the web visit > https://groups.google.com/d/msgid/v8-users/CAH3p7oOHbcZqCXLDL9m2Eyw-%3DGJLQJCac22W%3Dnf0R2xaX7z-GA%40mail.gmail.com > > <https://groups.google.com/d/msgid/v8-users/CAH3p7oOHbcZqCXLDL9m2Eyw-%3DGJLQJCac22W%3Dnf0R2xaX7z-GA%40mail.gmail.com?utm_medium=email&utm_source=footer>. -- -- v8-users mailing list v8-users@googlegroups.com http://groups.google.com/group/v8-users --- You received this message because you are subscribed to the Google Groups "v8-users" group. To unsubscribe from this group and stop receiving emails from it, send an email to v8-users+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/v8-users/1ac31ebe-76de-4872-9ad7-32e0c6baf81a%40app.fastmail.com.