Issue #8407: Fix pthread_sigmask() tests on Mac OS X

Disable faulthandler timeout thread on Mac OS X: it interacts with
pthread_sigmask() tests.
This commit is contained in:
Victor Stinner 2011-05-03 14:11:22 +02:00
parent 49a40cd562
commit 2d4a91e0d0
1 changed files with 15 additions and 0 deletions

View File

@ -504,6 +504,21 @@ class PthreadSigmaskTests(unittest.TestCase):
def read_sigmask():
return signal.pthread_sigmask(signal.SIG_BLOCK, [])
if sys.platform == "darwin":
import faulthandler
# The fault handler timeout thread masks all signals. If the main
# thread masks also SIGUSR1, all threads mask this signal. In this
# case, on Mac OS X, if we send SIGUSR1 to the process, the signal
# is pending in the main or the faulthandler timeout thread.
# Unblock SIGUSR1 in the main thread calls the signal handler only
# if the signal is pending for the main thread.
#
# Stop the faulthandler timeout thread to workaround this problem.
# Another solution would be to send the signal directly to the main
# thread using pthread_kill(), but Python doesn't expose this
# function.
faulthandler.cancel_dump_tracebacks_later()
old_handler = signal.signal(signum, handler)
self.addCleanup(signal.signal, signum, old_handler)