about summary refs log tree commit diff stats
path: root/src/libtools/signals.c
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2025-03-07 13:45:41 +0100
committerptitSeb <sebastien.chev@gmail.com>2025-03-07 13:45:41 +0100
commitc8b6f80f995d0ee00a46b423a360c38bf20cacee (patch)
tree8923015c32ba34140c047c3ec86bea383cfd3b17 /src/libtools/signals.c
parent9444ce0b890a73b28837f116ea551a18685b7b28 (diff)
downloadbox64-c8b6f80f995d0ee00a46b423a360c38bf20cacee.tar.gz
box64-c8b6f80f995d0ee00a46b423a360c38bf20cacee.zip
Removed isDBFromAddressRange and added that function to cleanDBFromAddressRange as it was used only 1 time and followed by that function anyway
Diffstat (limited to 'src/libtools/signals.c')
-rw-r--r--src/libtools/signals.c14
1 files changed, 7 insertions, 7 deletions
diff --git a/src/libtools/signals.c b/src/libtools/signals.c
index 452bbd6f..9b304e65 100644
--- a/src/libtools/signals.c
+++ b/src/libtools/signals.c
@@ -1809,13 +1809,13 @@ dynarec_log(/*LOG_DEBUG*/LOG_INFO, "%04d|Repeated SIGSEGV with Access error on %
         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;
             #ifdef DYNAREC
-            if((prot==(PROT_READ|PROT_WRITE|PROT_EXEC)) && isDBFromAddressRange(((uintptr_t)addr)&~(box64_pagesize-1), box64_pagesize)) {
-                printf_log(/*LOG_DEBUG*/LOG_INFO, "%04d| Strange SIGSEGV with Access error on %p for %p with DynaBlock(s) in range, db=%p, Lock=0x%x)\n", tid, pc, addr, db, Locks);
-                cleanDBFromAddressRange(((uintptr_t)addr)&~(box64_pagesize-1), box64_pagesize, 0);
-                refreshProtection((uintptr_t)addr);
-                relockMutex(Locks);
-                return;
-            }
+            if(prot==(PROT_READ|PROT_WRITE|PROT_EXEC))
+                if(cleanDBFromAddressRange(((uintptr_t)addr)&~(box64_pagesize-1), box64_pagesize, 0)) {
+                    printf_log(/*LOG_DEBUG*/LOG_INFO, "%04d| Strange SIGSEGV with Access error on %p for %p with DynaBlock(s) in range, db=%p, Lock=0x%x)\n", tid, pc, addr, db, Locks);
+                    refreshProtection((uintptr_t)addr);
+                    relockMutex(Locks);
+                    return;
+                }
             #endif
             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, Lock=0x%x)\n", tid, pc, addr, mapped?" mapped":"", db, prot, (void*)old_addr, Locks);
             if(!(old_addr==(uintptr_t)addr && old_prot==prot) || mapped) {