From 1c6d366e3cf865f3e0e84446537ec648387e7967 Mon Sep 17 00:00:00 2001 From: Nick Briggs Date: Sat, 22 Jul 2023 15:37:14 -0700 Subject: [PATCH] Catch more pointer problems in NativeAligned4FromLAddr --- inc/adr68k.h | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/inc/adr68k.h b/inc/adr68k.h index 9799780..e5c0789 100644 --- a/inc/adr68k.h +++ b/inc/adr68k.h @@ -28,11 +28,19 @@ */ /**********************************************************************/ +#include #include #include #include "lispemul.h" #include "lspglob.h" +static inline void dobacktrace() +{ + void* callstack[128]; + int i, frames = backtrace(callstack, 128); + backtrace_symbols_fd(callstack, frames, 2); +} + static inline LispPTR LAddrFromNative(void *NAddr) { if ((uintptr_t)NAddr & 1) { @@ -48,8 +56,9 @@ static inline DLword *NativeAligned2FromLAddr(LispPTR LAddr) static inline LispPTR *NativeAligned4FromLAddr(LispPTR LAddr) { - if (LAddr & 1) { - printf("Misaligned pointer in NativeAligned4FromLAddr 0x%x\n", LAddr); + if (LAddr & 1 || LAddr > 0x0FFFFFFF) { + printf("Misaligned/bad pointer in NativeAligned4FromLAddr 0x%x\n", LAddr); + dobacktrace(); } return (void *)(Lisp_world + LAddr); }