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.
scratch/igc
Po Lu 2024-05-14 10:16:18 +08:00
parent 8dccc586ea
commit fff245c529
1 changed files with 7 additions and 3 deletions

View File

@ -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 */