-
Notifications
You must be signed in to change notification settings - Fork 13
Open
Labels
apiasynciocancellationSC teardown semantics and anti-zombie semanticsSC teardown semantics and anti-zombie semanticsdevx-tooling"developer experience" improvements as provided `tractor.devx` for runtime dependents."developer experience" improvements as provided `tractor.devx` for runtime dependents.scstructurred concurrency relatedstructurred concurrency related
Description
TODO, write this up in better prose!
- traceback from a
moddenshutdown crash
[33] > ~/repos/modden/modden/runtime/env.py(891)
...
872 async def wait_for_proc(
873 self,
874 spawn: Spawn,
875 ) -> Proc:
876 '''
877 Wait for a spawned program's (root) process to be
878 published in this runspace; return the `Proc` handle
879 when avialable.
880
881 '''
882 # NOTE, currently this is contrived but eventually should
883 # be generalized for the distributed/multihost case!
884 _spawn = self._sid2spawn.get(spawn.sid)
885 assert _spawn is spawn
886
887 if not spawn.proc:
888 from_trio: asyncio.Queue = self.lo_wm._aio_chan._to_aio
889 while spawn.proc is None:
890 # async for new_spawn, proc in from_trio:
891 -> new_spawn, proc = await from_trio.get()
892 if new_spawn.sid == spawn.sid:
893 assert spawn.proc is proc
894 break
895
896 return spawn.proc
(Pdb+) from_trio
<Queue at 0x7f0f96f4f4d0 maxsize=256 tasks=52 shutdown>
(Pdb+)with stack from asyncio.run() down,
18] /home/goodboy/.local/share/uv/python/cpython-3.13.2-linux-x86_64-gnu/lib/python3.13/asyncio/base_events.py(712)run_until_complete()
-> self.run_forever()
[19] /home/goodboy/.local/share/uv/python/cpython-3.13.2-linux-x86_64-gnu/lib/python3.13/asyncio/base_events.py(683)run_forever()
-> self._run_once()
[20] /home/goodboy/.local/share/uv/python/cpython-3.13.2-linux-x86_64-gnu/lib/python3.13/asyncio/base_events.py(2040)_run_once()
-> handle._run()
[21] /home/goodboy/.local/share/uv/python/cpython-3.13.2-linux-x86_64-gnu/lib/python3.13/asyncio/events.py(89)_run()
-> self._context.run(self._callback, *self._args)
[22] /home/goodboy/repos/i3ipc-python/i3ipc/aio/connection.py(45)handler_coroutine()
-> await handler(conn, data)
[23] /home/goodboy/.local/share/uv/python/cpython-3.13.2-linux-x86_64-gnu/lib/python3.13/contextlib.py(100)inner()
-> async with self._recreate_cm():
[24] /home/goodboy/repos/modden/modden/wm/i3/utils.py(264)__aexit__()
-> return maybe_handle_crash.__exit__(self, *exc)
[25] /home/goodboy/repos/modden/modden/wm/i3/utils.py(226)__exit__()
-> with maybe_open_crash_handler(
[26] /home/goodboy/repos/tractor/tractor/devx/debug/_post_mortem.py(411)maybe_open_crash_handler()
-> with rtctx as boxed_maybe_exc:
[27] /home/goodboy/repos/tractor/tractor/devx/debug/_post_mortem.py(340)open_crash_handler()
-> yield boxed_maybe_exc
[28] /home/goodboy/repos/tractor/tractor/devx/debug/_post_mortem.py(412)maybe_open_crash_handler()
-> yield boxed_maybe_exc
[29] /home/goodboy/repos/modden/modden/wm/i3/utils.py(234)__exit__()
-> raise exc_value
[30] /home/goodboy/.local/share/uv/python/cpython-3.13.2-linux-x86_64-gnu/lib/python3.13/contextlib.py(101)inner()
-> return await func(*args, **kwds)
[31] /home/goodboy/repos/modden/modden/wm/i3/api.py(2179)on_win()
-> spawn: Spawn|None = await handlers.init_window_from_spawn(
[32] /home/goodboy/repos/modden/modden/wm/i3/handlers.py(125)init_window_from_spawn()
-> proc: procs.Proc = await wm.rs.wait_for_proc(spawn)
[33] > /home/goodboy/repos/modden/modden/runtime/env.py(891)wait_for_proc()
-> new_spawn, proc = await from_trio.get()
[34] /home/goodboy/.local/share/uv/python/cpython-3.13.2-linux-x86_64-gnu/lib/python3.13/asyncio/queues.py(182)get()
-> raise QueueShutDownMetadata
Metadata
Assignees
Labels
apiasynciocancellationSC teardown semantics and anti-zombie semanticsSC teardown semantics and anti-zombie semanticsdevx-tooling"developer experience" improvements as provided `tractor.devx` for runtime dependents."developer experience" improvements as provided `tractor.devx` for runtime dependents.scstructurred concurrency relatedstructurred concurrency related