mirror of
https://github.com/MariaDB/server.git
synced 2025-08-29 00:08:14 +03:00
Bug #47391 no stack trace printed to error log on
solaris after a crash This patch adds a Solaris-specific version of print_stacktrace() which uses printstack(2), available on all Solaris versions since Solaris 9. (While Solaris 11 adds support for the glibc functions backtrace_*() as of PSARC/2007/162, printstack() is used for consistency over all Solaris versions.) The symbol names are mangled, so use of c++filt may be required as described in the MySQL documentation.
This commit is contained in:
@@ -226,6 +226,25 @@ end:
|
|||||||
stack trace is much more helpful in diagnosing the problem, so please do \n\
|
stack trace is much more helpful in diagnosing the problem, so please do \n\
|
||||||
resolve it\n");
|
resolve it\n");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#elif defined(__sun)
|
||||||
|
|
||||||
|
/* Use Solaris' symbolic stack trace routine. */
|
||||||
|
#include <ucontext.h>
|
||||||
|
|
||||||
|
void print_stacktrace(gptr stack_bottom __attribute__((unused)),
|
||||||
|
ulong thread_stack __attribute__((unused)))
|
||||||
|
{
|
||||||
|
if (printstack(fileno(stderr)) == -1)
|
||||||
|
fprintf(stderr, "Error when traversing the stack, stack appears corrupt.\n");
|
||||||
|
else
|
||||||
|
fprintf(stderr, "Please read "
|
||||||
|
"http://dev.mysql.com/doc/mysql/en/using-stack-trace.html "
|
||||||
|
"and follow instructions on how to resolve the stack trace. "
|
||||||
|
"Resolved\nstack trace is much more helpful in diagnosing the "
|
||||||
|
"problem, so please do \nresolve it\n");
|
||||||
|
}
|
||||||
|
|
||||||
#endif /* TARGET_OS_LINUX */
|
#endif /* TARGET_OS_LINUX */
|
||||||
#endif /* HAVE_STACKTRACE */
|
#endif /* HAVE_STACKTRACE */
|
||||||
|
|
||||||
|
@@ -35,6 +35,9 @@ void check_thread_lib(void);
|
|||||||
#define HAVE_STACKTRACE
|
#define HAVE_STACKTRACE
|
||||||
extern void set_exception_pointers(EXCEPTION_POINTERS *ep);
|
extern void set_exception_pointers(EXCEPTION_POINTERS *ep);
|
||||||
#define init_stacktrace() {}
|
#define init_stacktrace() {}
|
||||||
|
#elif defined(__sun)
|
||||||
|
#define HAVE_STACKTRACE
|
||||||
|
#define init_stacktrace() {}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef HAVE_STACKTRACE
|
#ifdef HAVE_STACKTRACE
|
||||||
|
Reference in New Issue
Block a user