MDEV-15961: Fix stacktraces under FreeBSD https://jira.mariadb.org/browse/MDEV-15961 --- mysys/stacktrace.c.orig 2020-06-23 15:10:17 UTC +++ mysys/stacktrace.c @@ -33,13 +33,13 @@ #include #endif +#ifdef __linux__ #define PTR_SANE(p) ((p) && (char*)(p) >= heap_start && (char*)(p) <= heap_end) - static char *heap_start; - -#if(defined HAVE_BSS_START) && !(defined __linux__) extern char *__bss_start; -#endif +#else +#define PTR_SANE(p) (p) +#endif /* __linux */ /** Default handler for printing stacktrace @@ -67,9 +67,9 @@ static sig_handler default_handle_fatal_signal(int sig void my_init_stacktrace(int setup_handlers) { -#if(defined HAVE_BSS_START) && !(defined __linux__) +#ifdef __linux__ heap_start = (char*) &__bss_start; -#endif +#endif /* __linux__ */ if (setup_handlers) { struct sigaction sa; @@ -186,15 +186,16 @@ static int safe_print_str(const char *addr, size_t max int my_safe_print_str(const char* val, size_t max_len) { +#ifdef __linux__ +/* Only needed by the linux version of PTR_SANE */ char *heap_end; -#ifdef __linux__ // Try and make use of /proc filesystem to safely print memory contents. if (!safe_print_str(val, max_len)) return 0; -#endif heap_end= (char*) sbrk(0); +#endif if (!PTR_SANE(val)) {