@@ -6044,21 +6044,27 @@ def test_resource_tracker_exit_code(self):
60446044 self ._test_resource_tracker_leak_resources (
60456045 cleanup = cleanup ,
60466046 )
6047+
60476048 @unittest .skipUnless (hasattr (signal , "pthread_sigmask" ), "pthread_sigmask is not available" )
60486049 def test_resource_tracker_blocked_signals (self ):
60496050 #
60506051 # gh-127586: Check that resource_tracker does not override blocked signals of caller.
60516052 #
60526053 from multiprocessing .resource_tracker import ResourceTracker
6054+ orig_sigmask = signal .pthread_sigmask (signal .SIG_BLOCK , set ())
60536055 signals = {signal .SIGTERM , signal .SIGINT , signal .SIGUSR1 }
60546056
6055- for sig in signals :
6056- signal .pthread_sigmask (signal .SIG_SETMASK , {sig })
6057- self .assertEqual (signal .pthread_sigmask (signal .SIG_BLOCK , set ()), {sig })
6058- tracker = ResourceTracker ()
6059- tracker .ensure_running ()
6060- self .assertEqual (signal .pthread_sigmask (signal .SIG_BLOCK , set ()), {sig })
6061- tracker ._stop ()
6057+ try :
6058+ for sig in signals :
6059+ signal .pthread_sigmask (signal .SIG_SETMASK , {sig })
6060+ self .assertEqual (signal .pthread_sigmask (signal .SIG_BLOCK , set ()), {sig })
6061+ tracker = ResourceTracker ()
6062+ tracker .ensure_running ()
6063+ self .assertEqual (signal .pthread_sigmask (signal .SIG_BLOCK , set ()), {sig })
6064+ tracker ._stop ()
6065+ finally :
6066+ # restore sigmask to what it was before executing test
6067+ signal .pthread_sigmask (signal .SIG_SETMASK , orig_sigmask )
60626068
60636069class TestSimpleQueue (unittest .TestCase ):
60646070
0 commit comments