From 7057b7f92962c6971fbd617cb9e78c7251a1c403 Mon Sep 17 00:00:00 2001 From: ptitSeb Date: Mon, 21 Jun 2021 10:48:54 +0200 Subject: More logs on 'strange' SIGSEGV... --- src/libtools/signals.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'src/libtools') 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; -- cgit 1.4.1