@@ -6044,21 +6044,27 @@ def test_resource_tracker_exit_code(self):
6044
6044
self ._test_resource_tracker_leak_resources (
6045
6045
cleanup = cleanup ,
6046
6046
)
6047
+
6047
6048
@unittest .skipUnless (hasattr (signal , "pthread_sigmask" ), "pthread_sigmask is not available" )
6048
6049
def test_resource_tracker_blocked_signals (self ):
6049
6050
#
6050
6051
# gh-127586: Check that resource_tracker does not override blocked signals of caller.
6051
6052
#
6052
6053
from multiprocessing .resource_tracker import ResourceTracker
6054
+ orig_sigmask = signal .pthread_sigmask (signal .SIG_BLOCK , set ())
6053
6055
signals = {signal .SIGTERM , signal .SIGINT , signal .SIGUSR1 }
6054
6056
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 )
6062
6068
6063
6069
class TestSimpleQueue (unittest .TestCase ):
6064
6070
0 commit comments