Issue 31310: semaphore tracker isn't protected against crashes (original) (raw)
Tests are failed when ran with -Werror.
$ ./python -We -m test -vuall test_multiprocessing_fork test_multiprocessing_forkserver test_multiprocessing_spawn ...
ERROR: test_semaphore_tracker_sigkill (test.test_multiprocessing_fork.TestSemaphoreTracker)
Traceback (most recent call last): File "/home/serhiy/py/cpython/Lib/test/_test_multiprocessing.py", line 4582, in test_semaphore_tracker_sigkill self.check_semaphore_tracker_death(signal.SIGKILL, True) File "/home/serhiy/py/cpython/Lib/test/_test_multiprocessing.py", line 4546, in check_semaphore_tracker_death _semaphore_tracker.ensure_running() File "/home/serhiy/py/cpython/Lib/multiprocessing/semaphore_tracker.py", line 64, in ensure_running warnings.warn('semaphore_tracker: process died unexpectedly, ' UserWarning: semaphore_tracker: process died unexpectedly, relaunching. Some semaphores might leak.
...
ERROR: test_semaphore_tracker_sigint (test.test_multiprocessing_forkserver.TestSemaphoreTracker)
Traceback (most recent call last): File "/home/serhiy/py/cpython/Lib/test/_test_multiprocessing.py", line 4574, in test_semaphore_tracker_sigint self.check_semaphore_tracker_death(signal.SIGINT, False) File "/home/serhiy/py/cpython/Lib/test/_test_multiprocessing.py", line 4546, in check_semaphore_tracker_death _semaphore_tracker.ensure_running() File "/home/serhiy/py/cpython/Lib/multiprocessing/semaphore_tracker.py", line 64, in ensure_running warnings.warn('semaphore_tracker: process died unexpectedly, ' UserWarning: semaphore_tracker: process died unexpectedly, relaunching. Some semaphores might leak.
====================================================================== ERROR: test_semaphore_tracker_sigkill (test.test_multiprocessing_forkserver.TestSemaphoreTracker)
Traceback (most recent call last): File "/home/serhiy/py/cpython/Lib/test/_test_multiprocessing.py", line 4582, in test_semaphore_tracker_sigkill self.check_semaphore_tracker_death(signal.SIGKILL, True) File "/home/serhiy/py/cpython/Lib/test/_test_multiprocessing.py", line 4554, in check_semaphore_tracker_death sem = ctx.Semaphore() File "/home/serhiy/py/cpython/Lib/multiprocessing/context.py", line 82, in Semaphore return Semaphore(value, ctx=self.get_context()) File "/home/serhiy/py/cpython/Lib/multiprocessing/synchronize.py", line 126, in init SemLock.init(self, SEMAPHORE, value, SEM_VALUE_MAX, ctx=ctx) File "/home/serhiy/py/cpython/Lib/multiprocessing/synchronize.py", line 80, in init register(self._semlock.name) File "/home/serhiy/py/cpython/Lib/multiprocessing/semaphore_tracker.py", line 104, in register self._send('REGISTER', name) File "/home/serhiy/py/cpython/Lib/multiprocessing/semaphore_tracker.py", line 111, in _send self.ensure_running() File "/home/serhiy/py/cpython/Lib/multiprocessing/semaphore_tracker.py", line 64, in ensure_running warnings.warn('semaphore_tracker: process died unexpectedly, ' UserWarning: semaphore_tracker: process died unexpectedly, relaunching. Some semaphores might leak.
...
ERROR: test_semaphore_tracker_sigint (test.test_multiprocessing_spawn.TestSemaphoreTracker)
Traceback (most recent call last): File "/home/serhiy/py/cpython/Lib/test/_test_multiprocessing.py", line 4574, in test_semaphore_tracker_sigint self.check_semaphore_tracker_death(signal.SIGINT, False) File "/home/serhiy/py/cpython/Lib/test/_test_multiprocessing.py", line 4546, in check_semaphore_tracker_death _semaphore_tracker.ensure_running() File "/home/serhiy/py/cpython/Lib/multiprocessing/semaphore_tracker.py", line 64, in ensure_running warnings.warn('semaphore_tracker: process died unexpectedly, ' UserWarning: semaphore_tracker: process died unexpectedly, relaunching. Some semaphores might leak.
====================================================================== ERROR: test_semaphore_tracker_sigkill (test.test_multiprocessing_spawn.TestSemaphoreTracker)
Traceback (most recent call last): File "/home/serhiy/py/cpython/Lib/test/_test_multiprocessing.py", line 4582, in test_semaphore_tracker_sigkill self.check_semaphore_tracker_death(signal.SIGKILL, True) File "/home/serhiy/py/cpython/Lib/test/_test_multiprocessing.py", line 4554, in check_semaphore_tracker_death sem = ctx.Semaphore() File "/home/serhiy/py/cpython/Lib/multiprocessing/context.py", line 82, in Semaphore return Semaphore(value, ctx=self.get_context()) File "/home/serhiy/py/cpython/Lib/multiprocessing/synchronize.py", line 126, in init SemLock.init(self, SEMAPHORE, value, SEM_VALUE_MAX, ctx=ctx) File "/home/serhiy/py/cpython/Lib/multiprocessing/synchronize.py", line 80, in init register(self._semlock.name) File "/home/serhiy/py/cpython/Lib/multiprocessing/semaphore_tracker.py", line 104, in register self._send('REGISTER', name) File "/home/serhiy/py/cpython/Lib/multiprocessing/semaphore_tracker.py", line 111, in _send self.ensure_running() File "/home/serhiy/py/cpython/Lib/multiprocessing/semaphore_tracker.py", line 64, in ensure_running warnings.warn('semaphore_tracker: process died unexpectedly, ' UserWarning: semaphore_tracker: process died unexpectedly, relaunching. Some semaphores might leak.