Skip to content

Commit 36a6252

Browse files
committed
gh-141786 Add a test case
1 parent 63662b9 commit 36a6252

File tree

1 file changed

+138
-0
lines changed

1 file changed

+138
-0
lines changed

Lib/test/test_capi/test_opt.py

Lines changed: 138 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2695,6 +2695,144 @@ def recursive_wrapper_4569():
26952695
pass
26962696
"""))
26972697

2698+
def test_missing_parent_executor_does_not_crash(self):
2699+
script_helper.assert_python_ok("-c", textwrap.dedent("""
2700+
import random
2701+
2702+
rand = random.Random(38720)
2703+
import sys
2704+
2705+
def b():
2706+
for c in range(23):
2707+
rand.random()
2708+
rand.random()
2709+
if rand.random() > 0.1:
2710+
rand.random()
2711+
rand.random()
2712+
rand.random()
2713+
for c in range(4):
2714+
rand.random()
2715+
if rand.random():
2716+
0
2717+
if rand.random() > 0.1:
2718+
rand.random()
2719+
rand.random()
2720+
if rand.random():
2721+
rand.random()
2722+
if rand.random():
2723+
rand.random()
2724+
rand.random()
2725+
if rand.random():
2726+
rand.random()
2727+
rand.random()
2728+
if rand.random():
2729+
if rand.random() > 0.1:
2730+
rand.random()
2731+
if rand.random() < rand.random():
2732+
...
2733+
if rand.random() < rand.random():
2734+
...
2735+
if rand.random():
2736+
...
2737+
if rand.random() > 0.1:
2738+
rand.random()
2739+
rand.random()
2740+
for c in range(12):
2741+
rand.random()
2742+
2743+
def random(B):
2744+
if rand.random() < 0.1:
2745+
random(B)
2746+
2747+
def Random(B):
2748+
if rand.random():
2749+
random(B)
2750+
2751+
def b(B):
2752+
if rand.random():
2753+
Random(B)
2754+
2755+
def c(B):
2756+
if rand.random() < 0.1:
2757+
b(B)
2758+
2759+
def a(B):
2760+
if rand.random() > 0.1:
2761+
c(B)
2762+
2763+
def A(B):
2764+
if rand.random() > 0.1:
2765+
a(B)
2766+
2767+
def C(B):
2768+
if rand.random() > 0.1:
2769+
A(B)
2770+
2771+
def B(B):
2772+
if rand.random() < 0.1:
2773+
C(B)
2774+
2775+
for D in range(200):
2776+
try:
2777+
B(D)
2778+
except:
2779+
...
2780+
2781+
class A:
2782+
def __del__(C):
2783+
b = sys._getframe(1)
2784+
exec("D=0", b.f_globals, b.f_locals)
2785+
2786+
B = A()
2787+
if rand.random() < 0.1:
2788+
if rand.random() < 0.1:
2789+
if rand.random() < 0.1:
2790+
for D in range(D):
2791+
if rand.random() < 0.1:
2792+
if rand.random() > 0.1:
2793+
if rand.random():
2794+
if rand.random() > rand.random():
2795+
C
2796+
if rand.random() < 0.1:
2797+
if rand.random() < 0.1:
2798+
if rand.random() < 0.1:
2799+
del B
2800+
if rand.random() < 0.1:
2801+
if rand.random() < 0.1:
2802+
if rand.random():
2803+
0
2804+
if rand.random() > 0.1:
2805+
if rand.random() > 0.1:
2806+
rand.random()
2807+
rand.random()
2808+
if rand.random() > 0.1:
2809+
rand.random()
2810+
rand.random()
2811+
if rand.random() > 0.1:
2812+
if rand.random() > 0.1:
2813+
rand.random()
2814+
rand.random()
2815+
rand.random()
2816+
rand.random()
2817+
if rand.random() > 0.1:
2818+
if rand.random() > 0.1:
2819+
rand.random()
2820+
if rand.random() > rand.random():
2821+
0
2822+
if rand.random():
2823+
C
2824+
if rand.random() > 0.1:
2825+
rand.random()
2826+
rand.random()
2827+
for c in range(3):
2828+
if rand.random():
2829+
0
2830+
for c in range(2):
2831+
rand.random()
2832+
2833+
for D in range(5064):
2834+
b()
2835+
"""))
26982836

26992837
def global_identity(x):
27002838
return x

0 commit comments

Comments
 (0)