From 86aaec696fd497d9ab821bd534d8cbba1a43dcc4 Mon Sep 17 00:00:00 2001 From: Tyler Goodlet Date: Mon, 10 May 2021 07:47:38 -0400 Subject: [PATCH] Don't kill root's immediate children when in debug If the root calls `trio.Process.kill()` on immediate child proc teardown when the child is using pdb, we can get stdstreams clobbering that results in a pdb++ repl where the user can't see what's been typed. Not killing such children on cancellation / error seems to resolve this issue whilst still giving reliable termination. For now, code that special path until a time it becomes a problem for ensuring zombie reaps. --- tractor/_spawn.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tractor/_spawn.py b/tractor/_spawn.py index 0fc9dbb..b88ca70 100644 --- a/tractor/_spawn.py +++ b/tractor/_spawn.py @@ -339,6 +339,7 @@ async def new_proc( bind_addr=bind_addr, parent_addr=parent_addr, _runtime_vars=_runtime_vars, + infect_asyncio=infect_asyncio, task_status=task_status, ) @@ -354,6 +355,7 @@ async def mp_new_proc( parent_addr: Tuple[str, int], _runtime_vars: Dict[str, Any], # serialized and sent to _child *, + infect_asyncio: bool = False, task_status: TaskStatus[Portal] = trio.TASK_STATUS_IGNORED ) -> None: