diff options
Diffstat (limited to 'runtime/native_bridge_art_interface.cc')
-rw-r--r-- | runtime/native_bridge_art_interface.cc | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/runtime/native_bridge_art_interface.cc b/runtime/native_bridge_art_interface.cc index d77cfa1d35..cd8315cdf9 100644 --- a/runtime/native_bridge_art_interface.cc +++ b/runtime/native_bridge_art_interface.cc @@ -118,7 +118,15 @@ void InitializeNativeBridge(JNIEnv* env, const char* instruction_set) { for (int signal = 0; signal < _NSIG; ++signal) { android::NativeBridgeSignalHandlerFn fn = android::NativeBridgeGetSignalHandler(signal); if (fn != nullptr) { - AddSpecialSignalHandlerFn(signal, fn); + sigset_t mask; + sigfillset(&mask); + SigchainAction sa = { + .sc_sigaction = fn, + .sc_mask = mask, + // The native bridge signal might not return back to sigchain's handler. + .sc_flags = SIGCHAIN_ALLOW_NORETURN, + }; + AddSpecialSignalHandlerFn(signal, &sa); } } #endif |