about summary refs log tree commit diff stats
path: root/src
diff options
context:
space:
mode:
authorptitSeb <sebastien.chev@gmail.com>2024-09-08 15:06:54 +0200
committerptitSeb <sebastien.chev@gmail.com>2024-09-08 15:06:54 +0200
commita9f96b9d622a8d8462957d9d42b05d3574f6ba75 (patch)
treec4a5d050622d53372e0a6ba1f40222d2c197748f /src
parent8f855f5ddeb4de303085757b7c417b66665e1c3e (diff)
downloadbox64-a9f96b9d622a8d8462957d9d42b05d3574f6ba75.tar.gz
box64-a9f96b9d622a8d8462957d9d42b05d3574f6ba75.zip
Show x86opcode at segfault if segfault address is not pc
Diffstat (limited to 'src')
-rw-r--r--src/libtools/signals.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/libtools/signals.c b/src/libtools/signals.c
index bb58efee..c7111ec1 100644
--- a/src/libtools/signals.c
+++ b/src/libtools/signals.c
@@ -1848,7 +1848,7 @@ dynarec_log(/*LOG_DEBUG*/LOG_INFO, "Repeated SIGSEGV with Access error on %p for
             }
             if(sig==SIGILL) {
                 printf_log(log_minimum, " opcode=%02X %02X %02X %02X %02X %02X %02X %02X (%02X %02X %02X %02X %02X)\n", ((uint8_t*)pc)[0], ((uint8_t*)pc)[1], ((uint8_t*)pc)[2], ((uint8_t*)pc)[3], ((uint8_t*)pc)[4], ((uint8_t*)pc)[5], ((uint8_t*)pc)[6], ((uint8_t*)pc)[7], ((uint8_t*)x64pc)[0], ((uint8_t*)x64pc)[1], ((uint8_t*)x64pc)[2], ((uint8_t*)x64pc)[3], ((uint8_t*)x64pc)[4]);
-            } else if(sig==SIGBUS) {
+            } else if(sig==SIGBUS || (sig==SIGSEGV && (x64pc!=(uintptr_t)addr) && (pc!=addr))) {
                 printf_log(log_minimum, " x86opcode=%02X %02X %02X %02X %02X %02X %02X %02X (opcode=%08x)\n", ((uint8_t*)x64pc)[0], ((uint8_t*)x64pc)[1], ((uint8_t*)x64pc)[2], ((uint8_t*)x64pc)[3], ((uint8_t*)x64pc)[4], ((uint8_t*)x64pc)[5], ((uint8_t*)x64pc)[6], ((uint8_t*)x64pc)[7], *(uint32_t*)pc);
             } else {
                 printf_log(log_minimum, "\n");