From 7c36c7e93cd154c8f154a1bc33c9a7557c5caa8d Mon Sep 17 00:00:00 2001 From: Tor Didriksen Date: Mon, 13 Dec 2010 12:19:30 +0100 Subject: 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() --- dbug/dbug.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'dbug') diff --git a/dbug/dbug.c b/dbug/dbug.c index fecdd4f8a6c..06a9f7b4bac 100644 --- a/dbug/dbug.c +++ b/dbug/dbug.c @@ -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; -- cgit v1.2.1