Dump stack for "bad memory reference". Bug 2904
authorJeremy Harris <jgh146exb@wizmail.org>
Sat, 13 Aug 2022 19:58:29 +0000 (20:58 +0100)
committerJeremy Harris <jgh146exb@wizmail.org>
Sun, 14 Aug 2022 12:52:56 +0000 (13:52 +0100)
src/src/exim.c
src/src/functions.h
src/src/store.c

index 23e206d2a80867676b23232ed746385b2009ecb1..ea4286af34c318a767f127d59a2176f34fba782f 100644 (file)
@@ -232,7 +232,7 @@ exit(1);
 ***********************************************/
 
 #define STACKDUMP_MAX 24
-static void
+void
 stackdump(void)
 {
 #ifndef NO_EXECINFO
index e71823410274812d8b06c562dfaa8b2ea686d93d..92a4831e381eaad21e43d8e67f08a0a5efca2531 100644 (file)
@@ -547,6 +547,7 @@ extern int     stdin_ferror(void);
 extern BOOL    stdin_hasc(void);
 extern int     stdin_ungetc(int);
 
+extern void    stackdump(void);
 extern void    store_exit(void);
 extern void    store_init(void);
 extern void    store_writeprotect(int);
index c98fcbf21b31c71fee83d7af092b34543c7ddac1..d99d2ab690cbdd45e64256b8cbbec626efe68045 100644 (file)
@@ -274,6 +274,9 @@ for (pp = paired_pools; pp < paired_pools + N_PAIRED_POOLS; pp++)
   for (b = pp->chainbase; b; b = b->next)
     if (is_pointer_in_block(b, p)) return pp;
 
+#ifndef COMPILE_UTILITY
+stackdump();
+#endif
 log_write(0, LOG_MAIN|LOG_PANIC_DIE,
   "bad memory reference; pool not found, at %s %d", func, linenumber);
 return NULL;