@@ -1706,6 +1706,7 @@ def close(self) -> None:
1706
1706
self .asyncgens .close ()
1707
1707
if "after_run" in self .instruments :
1708
1708
self .instruments .call ("after_run" )
1709
+ self .system_nursery : Nursery | None = None
1709
1710
# This is where KI protection gets disabled, so we do it last
1710
1711
self .ki_manager .close ()
1711
1712
@@ -1920,6 +1921,7 @@ def task_exited(self, task: Task, outcome: Outcome[Any]) -> None:
1920
1921
task ._activate_cancel_status (None )
1921
1922
self .tasks .remove (task )
1922
1923
if task is self .init_task :
1924
+ self .init_task = None
1923
1925
# If the init task crashed, then something is very wrong and we
1924
1926
# let the error propagate. (It'll eventually be wrapped in a
1925
1927
# TrioInternalError.)
@@ -1930,6 +1932,7 @@ def task_exited(self, task: Task, outcome: Outcome[Any]) -> None:
1930
1932
raise TrioInternalError
1931
1933
else :
1932
1934
if task is self .main_task :
1935
+ self .main_task = None
1933
1936
self .main_task_outcome = outcome
1934
1937
outcome = Value (None )
1935
1938
assert task ._parent_nursery is not None , task
@@ -2394,12 +2397,15 @@ def run(
2394
2397
sniffio_library .name = prev_library
2395
2398
# Inlined copy of runner.main_task_outcome.unwrap() to avoid
2396
2399
# cluttering every single Trio traceback with an extra frame.
2397
- if isinstance (runner .main_task_outcome , Value ):
2398
- return cast (RetT , runner .main_task_outcome .value )
2399
- elif isinstance (runner .main_task_outcome , Error ):
2400
- raise runner .main_task_outcome .error
2401
- else : # pragma: no cover
2402
- raise AssertionError (runner .main_task_outcome )
2400
+ try :
2401
+ if isinstance (runner .main_task_outcome , Value ):
2402
+ return cast (RetT , runner .main_task_outcome .value )
2403
+ elif isinstance (runner .main_task_outcome , Error ):
2404
+ raise runner .main_task_outcome .error
2405
+ else : # pragma: no cover
2406
+ raise AssertionError (runner .main_task_outcome )
2407
+ finally :
2408
+ del runner
2403
2409
2404
2410
2405
2411
def start_guest_run (
@@ -2808,6 +2814,7 @@ def unrolled_run(
2808
2814
if isinstance (runner .main_task_outcome , Error ):
2809
2815
ki .__context__ = runner .main_task_outcome .error
2810
2816
runner .main_task_outcome = Error (ki )
2817
+ del runner
2811
2818
2812
2819
2813
2820
################################################################
0 commit comments