mirror of
https://github.com/python/cpython.git
synced 2025-10-30 13:11:29 +00:00
[3.9] bpo-43710: Rollback the 3.9 bpo-42500 fix, it broke the ABI in 3.9.3 (#25179)
This reverts commit 8b795ab554.
It changed the PyThreadState structure size, breaking the ABI in 3.9.3.
This commit is contained in:
parent
de0b2b1330
commit
c7b0feca25
9 changed files with 79 additions and 74 deletions
|
|
@ -1043,7 +1043,7 @@ def gen():
|
|||
# tstate->recursion_depth is equal to (recursion_limit - 1)
|
||||
# and is equal to recursion_limit when _gen_throw() calls
|
||||
# PyErr_NormalizeException().
|
||||
recurse(setrecursionlimit(depth + 2) - depth)
|
||||
recurse(setrecursionlimit(depth + 2) - depth - 1)
|
||||
finally:
|
||||
sys.setrecursionlimit(recursionlimit)
|
||||
print('Done.')
|
||||
|
|
@ -1073,54 +1073,6 @@ def test_recursion_normalizing_infinite_exception(self):
|
|||
b'while normalizing an exception', err)
|
||||
self.assertIn(b'Done.', out)
|
||||
|
||||
|
||||
def test_recursion_in_except_handler(self):
|
||||
|
||||
def set_relative_recursion_limit(n):
|
||||
depth = 1
|
||||
while True:
|
||||
try:
|
||||
sys.setrecursionlimit(depth)
|
||||
except RecursionError:
|
||||
depth += 1
|
||||
else:
|
||||
break
|
||||
sys.setrecursionlimit(depth+n)
|
||||
|
||||
def recurse_in_except():
|
||||
try:
|
||||
1/0
|
||||
except:
|
||||
recurse_in_except()
|
||||
|
||||
def recurse_after_except():
|
||||
try:
|
||||
1/0
|
||||
except:
|
||||
pass
|
||||
recurse_after_except()
|
||||
|
||||
def recurse_in_body_and_except():
|
||||
try:
|
||||
recurse_in_body_and_except()
|
||||
except:
|
||||
recurse_in_body_and_except()
|
||||
|
||||
recursionlimit = sys.getrecursionlimit()
|
||||
try:
|
||||
set_relative_recursion_limit(10)
|
||||
for func in (recurse_in_except, recurse_after_except, recurse_in_body_and_except):
|
||||
with self.subTest(func=func):
|
||||
try:
|
||||
func()
|
||||
except RecursionError:
|
||||
pass
|
||||
else:
|
||||
self.fail("Should have raised a RecursionError")
|
||||
finally:
|
||||
sys.setrecursionlimit(recursionlimit)
|
||||
|
||||
|
||||
@cpython_only
|
||||
def test_recursion_normalizing_with_no_memory(self):
|
||||
# Issue #30697. Test that in the abort that occurs when there is no
|
||||
|
|
@ -1157,7 +1109,7 @@ def raiseMemError():
|
|||
except MemoryError as e:
|
||||
tb = e.__traceback__
|
||||
else:
|
||||
self.fail("Should have raised a MemoryError")
|
||||
self.fail("Should have raises a MemoryError")
|
||||
return traceback.format_tb(tb)
|
||||
|
||||
tb1 = raiseMemError()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue