diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2024-01-19 15:09:20 +0100 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2024-01-19 15:09:20 +0100 |
| commit | e4c64073c5b433d8a59f1a456518a45037a414dc (patch) | |
| tree | 87a3f5509fdfaa76f91a26f8eb97a7c0144a4664 /src/libtools/signals.c | |
| parent | 0ff15e91d94e82fdb3d1a7de4529c58774550c07 (diff) | |
| download | box64-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.c | 3 |
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 |