* Staale Smedseng <Staale.Smedseng@stripped> [09/10/16 15:37]:
> 2817 Staale Smedseng 2009-10-16
> 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). The symbol
> names are mangled, so use of c++filt may be required as
> described in the MySQL documentation.
This looks sane and clean to me. Please push.
When Davi comes back, if he has any objection, we can write a
follow up patch.
Thank you for fixing this,
> modified:
> sql/stacktrace.c
> sql/stacktrace.h
> === modified file 'sql/stacktrace.c'
> --- a/sql/stacktrace.c 2008-09-16 11:16:41 +0000
> +++ b/sql/stacktrace.c 2009-10-16 11:20:03 +0000
> @@ -226,6 +226,23 @@ end:
> stack trace is much more helpful in diagnosing the problem, so please do \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\n\
> +stack trace is much more helpful in diagnosing the problem, so please do \n\
> +resolve it\n");
> +}
> +
> #endif /* TARGET_OS_LINUX */
> #endif /* HAVE_STACKTRACE */
>
>
> === modified file 'sql/stacktrace.h'
> --- a/sql/stacktrace.h 2008-02-19 11:37:39 +0000
> +++ b/sql/stacktrace.h 2009-10-16 11:20:03 +0000
> @@ -35,6 +35,9 @@ void check_thread_lib(void);
> #define HAVE_STACKTRACE
> extern void set_exception_pointers(EXCEPTION_POINTERS *ep);
> #define init_stacktrace() {}
> +#elif defined(__sun)
> +#define HAVE_STACKTRACE
> +#define init_stacktrace() {}
> #endif
>
> #ifdef HAVE_STACKTRACE
--
kostja