Merge 3.2
This commit is contained in:
commit
3165a75e45
|
@ -305,7 +305,7 @@ else:
|
|||
'''
|
||||
Returns prefix of command line used for spawning a child process
|
||||
'''
|
||||
if process.current_process()._identity==() and is_forking(sys.argv):
|
||||
if getattr(process.current_process(), '_inheriting', False):
|
||||
raise RuntimeError('''
|
||||
Attempt to start a new process before the current process
|
||||
has finished its bootstrapping phase.
|
||||
|
|
|
@ -0,0 +1,13 @@
|
|||
import multiprocessing, sys
|
||||
|
||||
def foo():
|
||||
print("123")
|
||||
|
||||
# Because "if __name__ == '__main__'" is missing this will not work
|
||||
# correctly on Windows. However, we should get a RuntimeError rather
|
||||
# than the Windows equivalent of a fork bomb.
|
||||
|
||||
p = multiprocessing.Process(target=foo)
|
||||
p.start()
|
||||
p.join()
|
||||
sys.exit(p.exitcode)
|
|
@ -20,6 +20,7 @@ import random
|
|||
import logging
|
||||
import struct
|
||||
import test.support
|
||||
import test.script_helper
|
||||
|
||||
|
||||
# Skip tests if _multiprocessing wasn't built.
|
||||
|
@ -3346,9 +3347,29 @@ class TestTimeouts(unittest.TestCase):
|
|||
finally:
|
||||
socket.setdefaulttimeout(old_timeout)
|
||||
|
||||
#
|
||||
# Test what happens with no "if __name__ == '__main__'"
|
||||
#
|
||||
|
||||
class TestNoForkBomb(unittest.TestCase):
|
||||
def test_noforkbomb(self):
|
||||
name = os.path.join(os.path.dirname(__file__), 'mp_fork_bomb.py')
|
||||
if WIN32:
|
||||
rc, out, err = test.script_helper.assert_python_failure(name)
|
||||
self.assertEqual('', out.decode('ascii'))
|
||||
self.assertIn('RuntimeError', err.decode('ascii'))
|
||||
else:
|
||||
rc, out, err = test.script_helper.assert_python_ok(name)
|
||||
self.assertEqual('123', out.decode('ascii').rstrip())
|
||||
self.assertEqual('', err.decode('ascii'))
|
||||
|
||||
#
|
||||
#
|
||||
#
|
||||
|
||||
testcases_other = [OtherTest, TestInvalidHandle, TestInitializers,
|
||||
TestStdinBadfiledescriptor, TestWait, TestInvalidFamily,
|
||||
TestFlags, TestTimeouts]
|
||||
TestFlags, TestTimeouts, TestNoForkBomb]
|
||||
|
||||
#
|
||||
#
|
||||
|
|
Loading…
Reference in New Issue