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>)
This commit is contained in:
parent
0e77c3295a
commit
fcd44f727d
19
dbug/dbug.c
19
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;
|
||||
|
@ -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 */
|
||||
|
Loading…
x
Reference in New Issue
Block a user