From 5f2bd77887a3163c5d82fe6abf17662f9c863cbd Mon Sep 17 00:00:00 2001 From: Eric Andersen Date: Fri, 14 May 2004 10:22:10 +0000 Subject: Alexandre Oliva writes: A program that requests __pthread_sig_debug to be blocked will self-deadlock when it requests a thread to be created, because the debugger (rda or gdb) will never get the signal, so it won't wake up the pthread manager as expected. This patch fixes it. --- libpthread/linuxthreads/signals.c | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'libpthread/linuxthreads') diff --git a/libpthread/linuxthreads/signals.c b/libpthread/linuxthreads/signals.c index 7cb6d3c57..df15b884e 100644 --- a/libpthread/linuxthreads/signals.c +++ b/libpthread/linuxthreads/signals.c @@ -38,9 +38,13 @@ int pthread_sigmask(int how, const sigset_t * newmask, sigset_t * oldmask) case SIG_SETMASK: sigaddset(&mask, __pthread_sig_restart); sigdelset(&mask, __pthread_sig_cancel); + if (__pthread_sig_debug > 0) + sigdelset(&mask, __pthread_sig_debug); break; case SIG_BLOCK: sigdelset(&mask, __pthread_sig_cancel); + if (__pthread_sig_debug > 0) + sigdelset(&mask, __pthread_sig_debug); break; case SIG_UNBLOCK: sigdelset(&mask, __pthread_sig_restart); -- cgit v1.2.3