RFR: 8320302: compiler/arguments/TestC1Globals.java hits SIGSEGV in ContinuationEntry::set_enter_code [v3]
David Holmes
dholmes at openjdk.org
Tue Feb 6 05:18:00 UTC 2024
On Mon, 5 Feb 2024 23:52:11 GMT, Patricio Chilano Mateo <pchilanomate at openjdk.org> wrote:
>> When creating Continuation.enterSpecial/doYield special native nmethods we currently assume the call to nmethod::new_native_nmethod() always succeeds. If the CodeCache happens to be full though, creating the nmethod will fail and we'll hit a SIGSEGV when trying to dereference the return value.
>>
>> Since this happens the first time those methods are resolved, throwing an exception at that point implying that we cannot run virtual threads looks odd from a user perspective. So instead I added a step to initialize the Continuation class at startup so that failure to create those nmethods is treated early as a fatal error as we do with any other critical resource needed by the VM. I measured the added step to the startup sequence to be ~90us, or about 0.3% of the total startup time.
>>
>> I verified the fix by running the test mentioned in the bug plus I also run tiers1-5 in mach5.
>>
>> Thanks,
>> Patricio
>
> Patricio Chilano Mateo has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains four additional commits since the last revision:
>
> - Merge branch 'master' into JDK-8320302
> - use vm_exit_during_initialization instead of fatal
> - inline call to initialize cont class
> - v1
src/hotspot/cpu/x86/sharedRuntime_x86_64.cpp line 1747:
> 1745: oop_maps,
> 1746: exception_offset);
> 1747: if (nm == nullptr) vm_exit_during_initialization("Initial size of CodeCache is too small");
IIUC `AdapterHandlerLibrary::create_native_wrapper` is the only caller of `generate_native_wrapper` so it is only called during VM init now. But not sure it wouldn't be better/cleaner to simply return nullptr here and have `AdapterHandlerLibrary::create_native_wrapper` do the `vm_exit_during_initialization`?
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/17455#discussion_r1479230718
More information about the hotspot-dev
mailing list