diff options
| author | ptitSeb <sebastien.chev@gmail.com> | 2021-06-21 10:48:54 +0200 |
|---|---|---|
| committer | ptitSeb <sebastien.chev@gmail.com> | 2021-06-21 10:48:54 +0200 |
| commit | 7057b7f92962c6971fbd617cb9e78c7251a1c403 (patch) | |
| tree | d776125ad898c53f3af2370b16f67d8e9a28c90d /src/libtools | |
| parent | 6af070e25f20030844fb68534ee58766861d545e (diff) | |
| download | box64-7057b7f92962c6971fbd617cb9e78c7251a1c403.tar.gz box64-7057b7f92962c6971fbd617cb9e78c7251a1c403.zip | |
More logs on 'strange' SIGSEGV...
Diffstat (limited to 'src/libtools')
| -rwxr-xr-x | src/libtools/signals.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/src/libtools/signals.c b/src/libtools/signals.c index 501c101f..0e3bf721 100755 --- a/src/libtools/signals.c +++ b/src/libtools/signals.c @@ -726,7 +726,7 @@ void my_box64signalhandler(int32_t sig, siginfo_t* info, void * ucntx) // check if SMC inside block db = FindDynablockFromNativeAddress(pc); db_searched = 1; - dynarec_log(LOG_DEBUG, "SIGSEGV with Access error on %p for %p , db=%p(%p)\n", pc, addr, db, db?((void*)db->x64_addr):NULL); + dynarec_log(LOG_DEBUG, "SIGSEGV with Access error on %p for %p , db=%p(%p), prot=0x%x\n", pc, addr, db, db?((void*)db->x64_addr):NULL, prot); if(db && ((addr>=db->x64_addr && addr<(db->x64_addr+db->x64_size)) || db->need_test)) { // dynablock got auto-dirty! need to get out of it!!! emu_jmpbuf_t* ejb = GetJmpBuf(); @@ -777,13 +777,14 @@ void my_box64signalhandler(int32_t sig, siginfo_t* info, void * ucntx) if(addr && pc && db) { if((glitch_pc!=pc || glitch_addr!=addr || glitch_prot!=prot)) { // probably a glitch due to intensive multitask... - dynarec_log(/*LOG_DEBUG*/LOG_INFO, "SIGSEGV with Access error on %p for %p , db=%p, retrying\n", pc, addr, db); - relockMutex(Locks); + dynarec_log(/*LOG_DEBUG*/LOG_INFO, "SIGSEGV with Access error on %p for %p, db=%p, prot=0x%x, retrying\n", pc, addr, db, prot); glitch_pc = pc; glitch_addr = addr; glitch_prot = prot; + relockMutex(Locks); return; // try again } +dynarec_log(/*LOG_DEBUG*/LOG_INFO, "Repeated SIGSEGV with Access error on %p for %p, db=%p, prot=0x%x\n", pc, addr, db, prot); glitch_pc = NULL; glitch_addr = NULL; glitch_prot = 0; |