summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--runtime/runtime.cc46
-rw-r--r--test/knownfailures.json6
2 files changed, 24 insertions, 28 deletions
diff --git a/runtime/runtime.cc b/runtime/runtime.cc
index 84ec7ef710..8c0150e6a7 100644
--- a/runtime/runtime.cc
+++ b/runtime/runtime.cc
@@ -1768,34 +1768,36 @@ bool Runtime::Init(RuntimeArgumentMap&& runtime_options_in) {
break;
}
- if (HandlesSignalsInCompiledCode()) {
+ if (!no_sig_chain_) {
fault_manager.Init();
- // These need to be in a specific order. The null point check handler must be
- // after the suspend check and stack overflow check handlers.
- //
- // Note: the instances attach themselves to the fault manager and are handled by it. The
- // manager will delete the instance on Shutdown().
- if (implicit_suspend_checks_) {
- new SuspensionHandler(&fault_manager);
- }
+ if (HandlesSignalsInCompiledCode()) {
+ // These need to be in a specific order. The null point check handler must be
+ // after the suspend check and stack overflow check handlers.
+ //
+ // Note: the instances attach themselves to the fault manager and are handled by it. The
+ // manager will delete the instance on Shutdown().
+ if (implicit_suspend_checks_) {
+ new SuspensionHandler(&fault_manager);
+ }
- if (implicit_so_checks_) {
- new StackOverflowHandler(&fault_manager);
- }
+ if (implicit_so_checks_) {
+ new StackOverflowHandler(&fault_manager);
+ }
- if (implicit_null_checks_) {
- new NullPointerHandler(&fault_manager);
- }
+ if (implicit_null_checks_) {
+ new NullPointerHandler(&fault_manager);
+ }
- if (kEnableJavaStackTraceHandler) {
- new JavaStackTraceHandler(&fault_manager);
- }
+ if (kEnableJavaStackTraceHandler) {
+ new JavaStackTraceHandler(&fault_manager);
+ }
- if (interpreter::CanRuntimeUseNterp()) {
- // Nterp code can use signal handling just like the compiled managed code.
- OatQuickMethodHeader* nterp_header = OatQuickMethodHeader::NterpMethodHeader;
- fault_manager.AddGeneratedCodeRange(nterp_header->GetCode(), nterp_header->GetCodeSize());
+ if (interpreter::CanRuntimeUseNterp()) {
+ // Nterp code can use signal handling just like the compiled managed code.
+ OatQuickMethodHeader* nterp_header = OatQuickMethodHeader::NterpMethodHeader;
+ fault_manager.AddGeneratedCodeRange(nterp_header->GetCode(), nterp_header->GetCodeSize());
+ }
}
}
diff --git a/test/knownfailures.json b/test/knownfailures.json
index da318d9b8c..1855429daf 100644
--- a/test/knownfailures.json
+++ b/test/knownfailures.json
@@ -1549,11 +1549,5 @@
"description": ["Change of behavior when used with JDK 17."],
"bug": "b/242985234",
"variant": "jvm"
- },
- {
- "tests" : ["305-other-fault-handler"],
- "variant": "interpreter",
- "description": ["This test intentionally segfaults, but the fault handler is only",
- " installed if implicit checks are supported (not for switch interpreter)."]
}
]