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.

Reply via email to