List:Commits« Previous MessageNext Message »
From:Staale Smedseng Date:December 6 2009 5:11pm
Subject:bzr commit into mysql-5.0-bugteam branch (staale.smedseng:2860) Bug#47391
View as plain text  
#At file:///net/atum21.norway/export/home/tmp/ss156133/z/47391-50/ based on revid:epotemkin@stripped

 2860 Staale Smedseng	2009-12-06
      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.
     @ sql/stacktrace.c
        Added Solaris-specific print_stacktrace().

    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-12-06 17:11:37 +0000
@@ -226,6 +226,25 @@ 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\nstack trace is much more helpful in diagnosing the "
+            "problem, so please do \nresolve 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-12-06 17:11:37 +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


Attachment: [text/bzr-bundle] bzr/staale.smedseng@sun.com-20091206171137-gw9yfy2nz7vi4ndq.bundle
Thread
bzr commit into mysql-5.0-bugteam branch (staale.smedseng:2860) Bug#47391Staale Smedseng6 Dec