RFR: 8320302: compiler/arguments/TestC1Globals.java hits SIGSEGV in ContinuationEntry::set_enter_code [v4]

David Holmes dholmes at openjdk.org
Fri Feb 9 01:32:05 UTC 2024


On Thu, 8 Feb 2024 22:44:09 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 incrementally with one additional commit since the last revision:
> 
>   Throw OOM from link_method()

That looks much simpler/cleaner - thanks!

-------------

Marked as reviewed by dholmes (Reviewer).

PR Review: https://git.openjdk.org/jdk/pull/17455#pullrequestreview-1871537277


More information about the hotspot-dev mailing list