Issue #15001: fix segfault on "del sys.modules['__main__']"

Patch by Victor Stinner.
This commit is contained in:
Hynek Schlawack 2012-11-07 09:41:28 +01:00
parent 6cad3712b3
commit b271b3e188
3 changed files with 25 additions and 7 deletions

View file

@ -2,9 +2,12 @@
# All tests are executed with environment variables ignored
# See test_cmd_line_script.py for testing of script execution
import test.test_support, unittest
import test.test_support
import sys
from test.script_helper import spawn_python, kill_python, python_exit_code
import unittest
from test.script_helper import (
assert_python_ok, spawn_python, kill_python, python_exit_code
)
class CmdLineTest(unittest.TestCase):
@ -101,6 +104,18 @@ class CmdLineTest(unittest.TestCase):
data = self.start_python('-R', '-c', code)
self.assertTrue('hash_randomization=1' in data)
def test_del___main__(self):
# Issue #15001: PyRun_SimpleFileExFlags() did crash because it kept a
# borrowed reference to the dict of __main__ module and later modify
# the dict whereas the module was destroyed
filename = test.test_support.TESTFN
self.addCleanup(test.test_support.unlink, filename)
with open(filename, "w") as script:
print >>script, "import sys"
print >>script, "del sys.modules['__main__']"
assert_python_ok(filename)
def test_main():
test.test_support.run_unittest(CmdLineTest)
test.test_support.reap_children()