List:Commits« Previous MessageNext Message »
From:Tor Didriksen Date:December 13 2010 4:13pm
Subject:bzr commit into mysql-5.1-bugteam branch (tor.didriksen:3519) Bug#58426
View as plain text  
#At file:///export/home/didrik/repo/5.1-bugteam/ based on revid:sergey.glukhov@stripped

 3519 Tor Didriksen	2010-12-13
      Bug #58426 Crashing tests not failing as they are supposed to on Solaris 10 debug
        
      On this platform we seem to get lots of other signals
      while waiting for SIGKILL to be delivered.
      
      Solution: use sigsuspend(<all signals blocked>)
     @ dbug/dbug.c
        New function _db_suicide_() which does kill(myself, -9) and then waits forever.
     @ include/my_dbug.h
        Let DBUG_SUICE wait forever until the KILL signal is delivered, and process dies.

    modified:
      dbug/dbug.c
      include/my_dbug.h
=== modified file 'dbug/dbug.c'
--- a/dbug/dbug.c	2010-10-19 08:19:57 +0000
+++ b/dbug/dbug.c	2010-12-13 16:13:01 +0000
@@ -2276,6 +2276,25 @@ void _db_flush_()
 }
 
 
+#ifndef __WIN__
+void _db_suicide_()
+{
+  int retval;
+  sigset_t new_mask;
+  sigfillset(&new_mask);
+
+  fprintf(stderr, "SIGKILL myself\n");
+  fflush(stderr);
+
+  retval= kill(getpid(), SIGKILL);
+  assert(retval == 0);
+  retval= sigsuspend(&new_mask);
+  fprintf(stderr, "sigsuspend returned %d errno %d \n", retval, errno);
+  assert(FALSE); /* With full signal mask, we should never return here. */
+}
+#endif  /* ! __WIN__ */
+
+
 void _db_lock_file_()
 {
   CODE_STATE *cs=0;

=== modified file 'include/my_dbug.h'
--- a/include/my_dbug.h	2010-10-18 11:24:34 +0000
+++ b/include/my_dbug.h	2010-12-13 16:13:01 +0000
@@ -160,7 +160,8 @@ extern  void _db_flush_();
 #ifdef __WIN__
 #define DBUG_SUICIDE() DBUG_ABORT()
 #else
-#define DBUG_SUICIDE() (_db_flush_(), kill(getpid(), SIGKILL), pause())
+extern void _db_suicide_();
+#define DBUG_SUICIDE() (_db_flush_(), _db_suicide_())
 #endif
 
 #else						/* No debugger */


Attachment: [text/bzr-bundle] bzr/tor.didriksen@oracle.com-20101213161301-81lprlbune7r98dl.bundle
Thread
bzr commit into mysql-5.1-bugteam branch (tor.didriksen:3519) Bug#58426Tor Didriksen13 Dec