Integrated: 8320302: compiler/arguments/TestC1Globals.java hits SIGSEGV in ContinuationEntry::set_enter_code
Patricio Chilano Mateo
pchilanomate at openjdk.org
Mon Feb 12 18:58:58 UTC 2024
On Tue, 16 Jan 2024 23:33:58 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
This pull request has now been integrated.
Changeset: 46287630
Author: Patricio Chilano Mateo <pchilanomate at openjdk.org>
URL: https://git.openjdk.org/jdk/commit/462876300103feaccc078ec8694b7d861a9ed4f3
Stats: 28 lines in 7 files changed: 20 ins; 8 del; 0 mod
8320302: compiler/arguments/TestC1Globals.java hits SIGSEGV in ContinuationEntry::set_enter_code
Reviewed-by: dholmes, coleenp
-------------
PR: https://git.openjdk.org/jdk/pull/17455
More information about the hotspot-dev
mailing list