about summary refs log tree commit diff stats
path: root/src/libtools/signals.c
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2024-01-19 15:09:20 +0100
committerptitSeb <sebastien.chev@gmail.com>2024-01-19 15:09:20 +0100
commite4c64073c5b433d8a59f1a456518a45037a414dc (patch)
tree87a3f5509fdfaa76f91a26f8eb97a7c0144a4664 /src/libtools/signals.c
parent0ff15e91d94e82fdb3d1a7de4529c58774550c07 (diff)
downloadbox64-e4c64073c5b433d8a59f1a456518a45037a414dc.tar.gz
box64-e4c64073c5b433d8a59f1a456518a45037a414dc.zip
Reworked exit, unloading libs and running Fini as it should (plus a workaround for nvidia driver not unloading)
Diffstat (limited to 'src/libtools/signals.c')
-rw-r--r--src/libtools/signals.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/libtools/signals.c b/src/libtools/signals.c
index a7253de5..1c654983 100644
--- a/src/libtools/signals.c
+++ b/src/libtools/signals.c
@@ -1221,6 +1221,7 @@ static pthread_mutex_t mutex_dynarec_prot = PTHREAD_ERRORCHECK_MUTEX_INITIALIZER
 #endif
 
 extern int box64_quit;
+extern int box64_exit_code;
 
 void my_box64signalhandler(int32_t sig, siginfo_t* info, void * ucntx)
 {
@@ -1237,7 +1238,7 @@ void my_box64signalhandler(int32_t sig, siginfo_t* info, void * ucntx)
         longjmp(SIG_JMPBUF, 1);
     if((sig==SIGSEGV || sig==SIGBUS) && box64_quit) {
         printf_log(LOG_INFO, "Sigfault/Segbus while quitting, exiting silently\n");
-        exit(0);    // Hack, segfault while quiting, exit silently
+        _exit(box64_exit_code);    // Hack, segfault while quiting, exit silently
     }
     ucontext_t *p = (ucontext_t *)ucntx;
     void* addr = (void*)info->si_addr;  // address that triggered the issue