From 35a32481c61a3d70e44ea58ea0fb0f0fb30f0451 Mon Sep 17 00:00:00 2001 From: ptitSeb Date: Sun, 28 Jan 2024 13:21:41 +0100 Subject: [DYNAREC] Narrow the cases for Strange SIGSEGV to protextion with READ & WIRTE --- src/libtools/signals.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/libtools/signals.c b/src/libtools/signals.c index f39e1170..da51bcd4 100644 --- a/src/libtools/signals.c +++ b/src/libtools/signals.c @@ -1449,7 +1449,7 @@ dynarec_log(/*LOG_DEBUG*/LOG_INFO, "Repeated SIGSEGV with Access error on %p for printf_log(log_minimum, "%04d|Double %s (code=%d, pc=%p, addr=%p, prot=%02x)!\n", tid, 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)) { + if((sig==SIGSEGV) && (info->si_code == SEGV_ACCERR) && ((prot&~PROT_CUSTOM)==(PROT_READ|PROT_WRITE) || (prot&~PROT_CUSTOM)==(PROT_READ|PROT_WRITE|PROT_EXEC))) { static uintptr_t old_addr = 0; printf_log(/*LOG_DEBUG*/LOG_INFO, "%04d| Strange SIGSEGV with Access error on %p for %p%s, db=%p, prot=0x%x (old_addr=%p)\n", tid, pc, addr, mapped?" mapped":"", db, prot, (void*)old_addr); #ifdef DYNAREC -- cgit 1.4.1