python-trio / python-trio/trio

Stack spew when quitting via the debugger

Open
#1,155 6 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

debugging user happiness
Dominant language
Python
Stars
7.3k
Forks
431
Avg merge
2d 17h
Merged PRs (30d)
6

Description

Can we do better than this?

smurf@dev:~/src/distkv$ ./kv server -l  0.dkv $(hostname)
> /src/distkv/distkv/server.py(2155)load()
-> m = UpdateEvent.deserialize(
(Pdb) c
Running.
^C
Program interrupted. (Use 'cont' to resume).
> /usr/lib/python3/dist-packages/trio/_core/_io_epoll.py(70)handle_io()
-> for fd, flags in events:
(Pdb) q
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/trio/_core/_run.py", line 1430, in run
    run_impl(runner, async_fn, args)
  File "/usr/lib/python3/dist-packages/trio/_core/_run.py", line 1494, in run_impl
    runner.io_manager.handle_io(timeout)
  File "/usr/lib/python3/dist-packages/trio/_core/_io_epoll.py", line 70, in handle_io
    for fd, flags in events:
  File "/usr/lib/python3/dist-packages/trio/_core/_io_epoll.py", line 70, in handle_io
    for fd, flags in events:
  File "/usr/lib/python3.7/bdb.py", line 88, in trace_dispatch
    return self.dispatch_line(frame)
  File "/usr/lib/python3.7/bdb.py", line 113, in dispatch_line
    if self.quitting: raise BdbQuit
bdb.BdbQuit

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "./kv", line 18, in <module>
    cmd()
  File "./distkv/command.py", line 84, in cmd
    main(standalone_mode=False)
  File "/usr/lib/python3/dist-packages/trio_click/core.py", line 799, in __call__
    return anyio.run(self._main, main, args, kwargs, backend=_anyio_backend)
  File "/usr/lib/python3/dist-packages/anyio/__init__.py", line 66, in run
    return asynclib.run(func, *args, **backend_options)  # type: ignore
  File "/usr/lib/python3/dist-packages/trio/_core/_run.py", line 1430, in run
    run_impl(runner, async_fn, args)
trio.TrioInternalError: internal error in trio - please file a bug!
Exception ignored in: <function Nursery.__del__ at 0x7fd9cb9351e0>
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/trio/_core/_run.py", line 638, in __del__
AssertionError: 
Exception ignored in: <function Nursery.__del__ at 0x7fd9cb9351e0>
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/trio/_core/_run.py", line 638, in __del__
AssertionError: 
Exception ignored in: <coroutine object Actor.spawn.<locals>._run at 0x7fd9ca9f7b48>
Traceback (most recent call last):
  File "../asyncserf/asyncserf/actor.py", line 430, in _run
  File "/usr/lib/python3/dist-packages/anyio/_backends/_trio.py", line 49, in __aexit__
  File "/usr/lib/python3/dist-packages/trio/_core/_ki.py", line 165, in wrapper
  File "/usr/lib/python3/dist-packages/trio/_core/_run.py", line 199, in __exit__
  File "/usr/lib/python3/dist-packages/trio/_core/_run.py", line 367, in _close
  File "/usr/lib/python3/dist-packages/trio/_core/_run.py", line 1645, in current_task
RuntimeError: must be called from async context
Exception ignored in: <coroutine object BaseCommand._main at 0x7fd9cb9148c8>
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/trio_click/core.py", line 802, in _main
  File "/usr/lib/python3/dist-packages/trio_click/core.py", line 748, in main
  File "/usr/lib/python3/dist-packages/trio_click/core.py", line 1175, in invoke
  File "/usr/lib/python3/dist-packages/trio_click/core.py", line 994, in invoke
  File "/usr/lib/python3/dist-packages/trio_click/core.py", line 588, in invoke
  File "./distkv/commands/server.py", line 124, in cli
  File "/usr/lib/python3/dist-packages/anyio/_backends/_trio.py", line 121, in __aexit__
  File "/usr/lib/python3/dist-packages/trio/_core/_run.py", line 493, in __aexit__
  File "/usr/lib/python3/dist-packages/trio/_core/_run.py", line 583, in _nested_child_finished
  File "/usr/lib/python3/dist-packages/trio/_core/_run.py", line 563, in _add_exc
  File "/usr/lib/python3/dist-packages/trio/_core/_ki.py", line 165, in wrapper
  File "/usr/lib/python3/dist-packages/trio/_core/_run.py", line 340, in cancel
  File "/usr/lib/python3/dist-packages/trio/_core/_run.py", line 742, in _attempt_delivery_of_any_pending_cancel
  File "/usr/lib/python3/dist-packages/trio/_core/_run.py", line 724, in _attempt_abort
  File "/usr/lib/python3/dist-packages/trio/_core/_io_epoll.py", line 114, in abort
KeyError: 8
Exception ignored in: <function Nursery.__del__ at 0x7fd9cb9351e0>
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/trio/_core/_run.py", line 638, in __del__
AssertionError: 
Exception ignored in: <coroutine object Serf.spawn.<locals>._run at 0x7fd9ca9f71c8>
Traceback (most recent call last):
  File "../asyncserf/asyncserf/client.py", line 115, in _run
  File "/usr/lib/python3/dist-packages/anyio/_backends/_trio.py", line 49, in __aexit__
  File "/usr/lib/python3/dist-packages/trio/_core/_ki.py", line 165, in wrapper
  File "/usr/lib/python3/dist-packages/trio/_core/_run.py", line 199, in __exit__
  File "/usr/lib/python3/dist-packages/trio/_core/_run.py", line 367, in _close
  File "/usr/lib/python3/dist-packages/trio/_core/_run.py", line 1645, in current_task
RuntimeError: must be called from async context
Exception ignored in: <function Nursery.__del__ at 0x7fd9cb9351e0>
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/trio/_core/_run.py", line 638, in __del__
AssertionError: 
Exception ignored in: <coroutine object _Server._accept at 0x7fd9ca9a4f48>
Traceback (most recent call last):
  File "./distkv/util.py", line 430, in _accept
  File "/usr/lib/python3/dist-packages/anyio/__init__.py", line 137, in open_cancel_scope
  File "/usr/lib/python3/dist-packages/anyio/__init__.py", line 85, in _get_asynclib
  File "/usr/lib/python3/dist-packages/sniffio/_impl.py", line 81, in current_async_library
sniffio._impl.AsyncLibraryNotFoundError: unknown async library, or not in async context
Exception ignored in: <coroutine object _Server._accept at 0x7fd9ca9bf048>
Traceback (most recent call last):
  File "./distkv/util.py", line 430, in _accept
  File "/usr/lib/python3/dist-packages/anyio/__init__.py", line 137, in open_cancel_scope
  File "/usr/lib/python3/dist-packages/anyio/__init__.py", line 85, in _get_asynclib
  File "/usr/lib/python3/dist-packages/sniffio/_impl.py", line 81, in current_async_library
sniffio._impl.AsyncLibraryNotFoundError: unknown async library, or not in async context
Exception ignored in: <coroutine object SerfConnection._reader at 0x7fd9ca9f7248>
Traceback (most recent call last):
  File "../asyncserf/asyncserf/connection.py", line 309, in _reader
  File "/usr/lib/python3/dist-packages/anyio/_backends/_trio.py", line 49, in __aexit__
  File "/usr/lib/python3/dist-packages/trio/_core/_ki.py", line 165, in wrapper
  File "/usr/lib/python3/dist-packages/trio/_core/_run.py", line 199, in __exit__
  File "/usr/lib/python3/dist-packages/trio/_core/_run.py", line 367, in _close
  File "/usr/lib/python3/dist-packages/trio/_core/_run.py", line 1645, in current_task
RuntimeError: must be called from async context
Exception ignored in: <coroutine object Actor.spawn.<locals>._run at 0x7fd9ca99c6c8>
Traceback (most recent call last):
  File "../asyncserf/asyncserf/actor.py", line 430, in _run
  File "/usr/lib/python3/dist-packages/anyio/_backends/_trio.py", line 49, in __aexit__
  File "/usr/lib/python3/dist-packages/trio/_core/_ki.py", line 165, in wrapper
  File "/usr/lib/python3/dist-packages/trio/_core/_run.py", line 199, in __exit__
  File "/usr/lib/python3/dist-packages/trio/_core/_run.py", line 367, in _close
  File "/usr/lib/python3/dist-packages/trio/_core/_run.py", line 1645, in current_task
RuntimeError: must be called from async context
Exception ignored in: <function Nursery.__del__ at 0x7fd9cb9351e0>
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/trio/_core/_run.py", line 638, in __del__
AssertionError: 
Exception ignored in: <coroutine object Actor.spawn.<locals>._run at 0x7fd9ca9a42c8>
Traceback (most recent call last):
  File "../asyncserf/asyncserf/actor.py", line 430, in _run
  File "/usr/lib/python3/dist-packages/anyio/_backends/_trio.py", line 49, in __aexit__
  File "/usr/lib/python3/dist-packages/trio/_core/_ki.py", line 165, in wrapper
  File "/usr/lib/python3/dist-packages/trio/_core/_run.py", line 199, in __exit__
  File "/usr/lib/python3/dist-packages/trio/_core/_run.py", line 367, in _close
  File "/usr/lib/python3/dist-packages/trio/_core/_run.py", line 1645, in current_task
RuntimeError: must be called from async context
Exception ignored in: <coroutine object Serf.spawn.<locals>._run at 0x7fd9ca9f7cc8>
Traceback (most recent call last):
  File "../asyncserf/asyncserf/client.py", line 115, in _run
  File "/usr/lib/python3/dist-packages/anyio/_backends/_trio.py", line 49, in __aexit__
  File "/usr/lib/python3/dist-packages/trio/_core/_ki.py", line 165, in wrapper
  File "/usr/lib/python3/dist-packages/trio/_core/_run.py", line 199, in __exit__
  File "/usr/lib/python3/dist-packages/trio/_core/_run.py", line 367, in _close
  File "/usr/lib/python3/dist-packages/trio/_core/_run.py", line 1645, in current_task
RuntimeError: must be called from async context
Exception ignored in: <coroutine object Serf.spawn.<locals>._run at 0x7fd9ca9f72c8>
Traceback (most recent call last):
  File "../asyncserf/asyncserf/client.py", line 115, in _run
  File "/usr/lib/python3/dist-packages/anyio/_backends/_trio.py", line 49, in __aexit__
  File "/usr/lib/python3/dist-packages/trio/_core/_ki.py", line 165, in wrapper
  File "/usr/lib/python3/dist-packages/trio/_core/_run.py", line 199, in __exit__
  File "/usr/lib/python3/dist-packages/trio/_core/_run.py", line 367, in _close
  File "/usr/lib/python3/dist-packages/trio/_core/_run.py", line 1645, in current_task
RuntimeError: must be called from async context
Exception ignored in: <coroutine object Serf.spawn.<locals>._run at 0x7fd9ca9f7348>
Traceback (most recent call last):
  File "../asyncserf/asyncserf/client.py", line 115, in _run
  File "/usr/lib/python3/dist-packages/anyio/_backends/_trio.py", line 49, in __aexit__
  File "/usr/lib/python3/dist-packages/trio/_core/_ki.py", line 165, in wrapper
  File "/usr/lib/python3/dist-packages/trio/_core/_run.py", line 199, in __exit__
  File "/usr/lib/python3/dist-packages/trio/_core/_run.py", line 367, in _close
  File "/usr/lib/python3/dist-packages/trio/_core/_run.py", line 1645, in current_task
RuntimeError: must be called from async context
Exception ignored in: <coroutine object Serf.spawn.<locals>._run at 0x7fd9ca99c7c8>
Traceback (most recent call last):
  File "../asyncserf/asyncserf/client.py", line 115, in _run
  File "/usr/lib/python3/dist-packages/anyio/_backends/_trio.py", line 49, in __aexit__
  File "/usr/lib/python3/dist-packages/trio/_core/_ki.py", line 165, in wrapper
  File "/usr/lib/python3/dist-packages/trio/_core/_run.py", line 199, in __exit__
  File "/usr/lib/python3/dist-packages/trio/_core/_run.py", line 367, in _close
  File "/usr/lib/python3/dist-packages/trio/_core/_run.py", line 1645, in current_task
RuntimeError: must be called from async context
Exception ignored in: <coroutine object Actor.spawn.<locals>._run at 0x7fd9ca9a4348>
Traceback (most recent call last):
  File "../asyncserf/asyncserf/actor.py", line 430, in _run
  File "/usr/lib/python3/dist-packages/anyio/_backends/_trio.py", line 49, in __aexit__
  File "/usr/lib/python3/dist-packages/trio/_core/_ki.py", line 165, in wrapper
  File "/usr/lib/python3/dist-packages/trio/_core/_run.py", line 199, in __exit__
  File "/usr/lib/python3/dist-packages/trio/_core/_run.py", line 367, in _close
  File "/usr/lib/python3/dist-packages/trio/_core/_run.py", line 1645, in current_task
RuntimeError: must be called from async context
Exception ignored in: <coroutine object Actor.spawn.<locals>._run at 0x7fd9ca9f7ac8>
Traceback (most recent call last):
  File "../asyncserf/asyncserf/actor.py", line 430, in _run
  File "/usr/lib/python3/dist-packages/anyio/_backends/_trio.py", line 49, in __aexit__
  File "/usr/lib/python3/dist-packages/trio/_core/_ki.py", line 165, in wrapper
  File "/usr/lib/python3/dist-packages/trio/_core/_run.py", line 199, in __exit__
  File "/usr/lib/python3/dist-packages/trio/_core/_run.py", line 367, in _close
  File "/usr/lib/python3/dist-packages/trio/_core/_run.py", line 1645, in current_task
RuntimeError: must be called from async context
Exception ignored in: <coroutine object Actor.spawn.<locals>._run at 0x7fd9ca9a4748>
Traceback (most recent call last):
  File "../asyncserf/asyncserf/actor.py", line 430, in _run
  File "/usr/lib/python3/dist-packages/anyio/_backends/_trio.py", line 49, in __aexit__
  File "/usr/lib/python3/dist-packages/trio/_core/_ki.py", line 165, in wrapper
  File "/usr/lib/python3/dist-packages/trio/_core/_run.py", line 199, in __exit__
  File "/usr/lib/python3/dist-packages/trio/_core/_run.py", line 367, in _close
  File "/usr/lib/python3/dist-packages/trio/_core/_run.py", line 1645, in current_task
RuntimeError: must be called from async context
Exception ignored in: <coroutine object Serf.spawn.<locals>._run at 0x7fd9ca9f70c8>
Traceback (most recent call last):
  File "../asyncserf/asyncserf/client.py", line 115, in _run
  File "/usr/lib/python3/dist-packages/anyio/_backends/_trio.py", line 49, in __aexit__
  File "/usr/lib/python3/dist-packages/trio/_core/_ki.py", line 165, in wrapper
  File "/usr/lib/python3/dist-packages/trio/_core/_run.py", line 199, in __exit__
  File "/usr/lib/python3/dist-packages/trio/_core/_run.py", line 367, in _close
  File "/usr/lib/python3/dist-packages/trio/_core/_run.py", line 1645, in current_task
RuntimeError: must be called from async context
Exception ignored in: <function Nursery.__del__ at 0x7fd9cb9351e0>
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/trio/_core/_run.py", line 638, in __del__
AssertionError: 
Exception ignored in: <coroutine object Server._accept_clients at 0x7fd9ca9f7148>
RuntimeError: coroutine ignored GeneratorExit

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

The report exercises ./kv through distkv/command.py and distkv/commands/server.py, with cleanup paths also shown in distkv/util.py; start by reproducing the debugger quit and tracing where BdbQuit reaches Trio. Done means quitting from the debugger no longer produces the reported traceback and follow-on cleanup errors.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
backend, networking
Issue type
Bug
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.