mirror of
https://github.com/python/cpython.git
synced 2024-12-15 04:44:47 +08:00
8ed317f1ca
Fix a crash on negative STACKADJ() when Low-Level trace (LLTRACE) is enabled.
32 lines
1012 B
Python
32 lines
1012 B
Python
import os
|
|
import textwrap
|
|
import unittest
|
|
|
|
from test import support
|
|
from test.support.script_helper import assert_python_ok
|
|
|
|
|
|
class TestLLTrace(unittest.TestCase):
|
|
|
|
def test_lltrace_does_not_crash_on_subscript_operator(self):
|
|
# If this test fails, it will reproduce a crash reported as
|
|
# bpo-34113. The crash happened at the command line console of
|
|
# debug Python builds with __ltrace__ enabled (only possible in console),
|
|
# when the interal Python stack was negatively adjusted
|
|
with open(support.TESTFN, 'w') as fd:
|
|
self.addCleanup(os.unlink, support.TESTFN)
|
|
fd.write(textwrap.dedent("""\
|
|
import code
|
|
|
|
console = code.InteractiveConsole()
|
|
console.push('__ltrace__ = 1')
|
|
console.push('a = [1, 2, 3]')
|
|
console.push('a[0] = 1')
|
|
print('unreachable if bug exists')
|
|
"""))
|
|
|
|
assert_python_ok(support.TESTFN)
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|