--- cpython-df2fdd42b375/Lib/test/_test_multiprocessing.py 2013-08-26 20:28:21.000000000 +0000 +++ cpython/Lib/test/_test_multiprocessing.py 2013-08-28 13:51:02.000000000 +0000 @@ -2923,29 +2923,21 @@ ALLOWED_TYPES = ('processes',) - @classmethod - def _killer(cls, pid): - time.sleep(0.5) - os.kill(pid, signal.SIGUSR1) - - @unittest.skipUnless(hasattr(signal, 'SIGUSR1'), 'requires SIGUSR1') + @unittest.skipUnless(hasattr(signal, 'alarm'), 'requires signal.alarm') def test_poll_eintr(self): got_signal = [False] def record(*args): got_signal[0] = True pid = os.getpid() - oldhandler = signal.signal(signal.SIGUSR1, record) - try: - killer = self.Process(target=self._killer, args=(pid,)) - killer.start() - p = self.Process(target=time.sleep, args=(1,)) - p.start() - p.join() - self.assertTrue(got_signal[0]) - self.assertEqual(p.exitcode, 0) - killer.join() - finally: - signal.signal(signal.SIGUSR1, oldhandler) + oldhandler = signal.signal(signal.SIGALRM, record) + self.addCleanup(signal.signal, signal.SIGALRM, oldhandler) + self.addCleanup(signal.alarm, 0) + signal.alarm(1) + p = self.Process(target=time.sleep, args=(2,)) + p.start() + p.join() + self.assertTrue(got_signal[0]) + self.assertEqual(p.exitcode, 0) # # Test to verify handle verification, see issue 3321