From f430bbad4a8173f392d1b7469dc1454eff780d80 Mon Sep 17 00:00:00 2001 From: Po Lu Date: Tue, 14 May 2024 10:16:18 +0800 Subject: [PATCH] Fix failure of `restart-emacs' to restart Emacs on Android * src/emacs.c (Fkill_emacs) [HAVE_ANDROID && !ANDROID_STUBIFY]: Arrange to terminate Emacs upon receipt of a bus error. (cherry picked from commit fff245c52931fc829877ae379e48b373c15a1dcb) --- src/emacs.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/emacs.c b/src/emacs.c index 58c751eaa6a..f122955884e 100644 --- a/src/emacs.c +++ b/src/emacs.c @@ -3005,7 +3005,9 @@ killed. */ #if defined HAVE_ANDROID && !defined ANDROID_STUBIFY if (android_init_gui) { - /* Calls to exit may be followed by illegal accesses from + struct sigaction sa; + + /* Calls to exit may be followed by invalid accesses from toolkit-managed threads as the thread group is destroyed, which are inconsequential when the process is being terminated, but which must be suppressed to inhibit reporting of superfluous @@ -3013,8 +3015,10 @@ killed. */ Execution won't return to Emacs whatever the value of RESTART, as `android_restart_emacs' will only ever abort or succeed. */ - signal (SIGBUS, SIG_IGN); - signal (SIGSEGV, SIG_IGN); + sigemptyset (&sa.sa_mask); + sa.sa_handler = _exit; + sigaction (SIGSEGV, &sa, NULL); + sigaction (SIGBUS, &sa, NULL); } #endif /* HAVE_ANDROID && !ANDROID_STUBIFY */ -- 2.39.5