diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2023-10-08 18:48:50 +0200 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2023-10-08 18:48:50 +0200 |
| commit | aba40a936057650d97b0cfb5a05694faa93d6f45 (patch) | |
| tree | cfe80c9d4b18af8873091deb98f6f2e6e882932d /src/libtools | |
| parent | 1a9e0766850b8c923f8bd667782c9421125d8e1c (diff) | |
| download | box64-aba40a936057650d97b0cfb5a05694faa93d6f45.tar.gz box64-aba40a936057650d97b0cfb5a05694faa93d6f45.zip | |
Improved a bit running unreadable memory
Diffstat (limited to 'src/libtools')
| -rw-r--r-- | src/libtools/signals.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/src/libtools/signals.c b/src/libtools/signals.c index bef94666..cfe1227a 100644 --- a/src/libtools/signals.c +++ b/src/libtools/signals.c @@ -1093,8 +1093,9 @@ void my_box64signalhandler(int32_t sig, siginfo_t* info, void * ucntx) if((Locks & is_dyndump_locked) && (sig==SIGSEGV) && current_helper) { printf_log(LOG_INFO, "FillBlock triggered a segfault at %p from %p\n", addr, pc); CancelBlock64(0); - cancelFillBlock(); // Segfault inside a Fillblock, cancel it's creation... relockMutex(Locks); + cancelFillBlock(); // Segfault inside a Fillblock, cancel it's creation... + // cancelFillBlock does not return } dynablock_t* db = NULL; int db_searched = 0; @@ -1238,7 +1239,7 @@ dynarec_log(/*LOG_DEBUG*/LOG_INFO, "Repeated SIGSEGV with Access error on %p for static int old_tid = 0; const char* signame = (sig==SIGSEGV)?"SIGSEGV":((sig==SIGBUS)?"SIGBUS":((sig==SIGILL)?"SIGILL":"SIGABRT")); if(old_code==info->si_code && old_pc==pc && old_addr==addr && old_tid==GetTID()) { - printf_log(log_minimum, "%04d|Double %s (code=%d, pc=%p, addr=%p)!\n", GetTID(), signame, old_code, old_pc, old_addr); + printf_log(log_minimum, "%04d|Double %s (code=%d, pc=%p, addr=%p, prot=%02x)!\n", GetTID(), signame, old_code, old_pc, old_addr, prot); exit(-1); } else { if((sig==SIGSEGV) && (info->si_code == SEGV_ACCERR) && ((prot&~PROT_CUSTOM)==5 || (prot&~PROT_CUSTOM)==7)) { |