From f812c344a7569837811946c3f7e546910ba7a2f2 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 fa0dac1..29c4032 100644 --- a/tractor/_spawn.py +++ b/tractor/_spawn.py @@ -331,6 +331,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, ) @@ -346,6 +347,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: