On Fri, Aug 8, 2025 at 2:28 AM Markus Armbruster <arm...@redhat.com> wrote: > > John Snow <js...@redhat.com> writes: > > > On Wed, Jul 16, 2025 at 4:32 AM Markus Armbruster <arm...@redhat.com> wrote: > >> > >> John Snow <js...@redhat.com> writes: > >> > >> > On Fri, Jul 11, 2025, 10:47 AM Markus Armbruster <arm...@redhat.com> > >> > wrote: > >> > >> [...] > >> > >> >> Exception ignored in: <function QEMUMonitorProtocol.__del__ at > >> >> 0x7fcfcd080d60> > >> >> Traceback (most recent call last): > >> >> File "/work/armbru/qemu/scripts/qmp/../../python/qemu/qmp/legacy.py", > >> >> line 310, in __del__ > >> >> self.close() > >> >> File "/work/armbru/qemu/scripts/qmp/../../python/qemu/qmp/legacy.py", > >> >> line 281, in close > >> >> self._sync( > >> >> File "/work/armbru/qemu/scripts/qmp/../../python/qemu/qmp/legacy.py", > >> >> line 102, in _sync > >> >> return self._aloop.run_until_complete( > >> >> File "/usr/lib64/python3.13/asyncio/base_events.py", line 719, in > >> >> run_until_complete > >> >> return future.result() > >> >> File "/usr/lib64/python3.13/asyncio/tasks.py", line 507, in wait_for > >> >> return await fut > >> >> File > >> >> "/work/armbru/qemu/scripts/qmp/../../python/qemu/qmp/protocol.py", line > >> >> 399, in disconnect > >> >> await self._wait_disconnect() > >> >> File > >> >> "/work/armbru/qemu/scripts/qmp/../../python/qemu/qmp/protocol.py", line > >> >> 719, in _wait_disconnect > >> >> await all_defined_tasks # Raise Exceptions from the bottom half. > >> >> File > >> >> "/work/armbru/qemu/scripts/qmp/../../python/qemu/qmp/protocol.py", line > >> >> 870, in _bh_loop_forever > >> >> await async_fn() > >> >> RuntimeError: cannot reuse already awaited coroutine > >> > > >> > Curious about this backtrace. It looks like something has gone > >> > fundamentally wrong in the internals and the error is being raised by the > >> > garbage collector which is not ideal. > >> > > >> > Can you help me reproduce this? Even if it's old/bad code, I don't want > >> > python-qemu-qmp faulting like this. > >> > >> Reproducer for Fedora 41, current master c079d3a31e4: > >> > >> Run > >> > >> $ qemu-system-x86_64 -S -display none -chardev > >> socket,id=mon1,path=test-qmp,server=on,wait=off -mon > >> mode=control,id=qmp,chardev=mon1 > >> > >> and > >> > >> $ scripts/qmp/qom-tree -s test-qmp >/dev/null > >> > >> Questions? > >> > > > > Doesn't seem to trigger for me on Fedora 42 from the c079d3a31e4 > > build. Is this a Python version difference thing rearing its head? > > I have no idea. > > Is there anything else I can do to help you?
Hm. Can you still reproduce this stack trace as of today? If so, can you please try modifying qemu.git/python/qemu/utils/qom_common.py and add "import logging" up at the top, and modify the entry_point classmethod: > @classmethod > def entry_point(cls) -> int: > """ > Build this command's parser, parse arguments, and run the command. > > :return: `run`'s return code. > """ > + logging.basicConfig(level=logging.DEBUG) > parser = argparse.ArgumentParser(description=cls.help) > cls.configure_parser(parser) > args = parser.parse_args() > return cls.command_runner(args) And then try running the crashy version again, and send me the (quite likely very long) output? Note: I really oughtta add a formal --debug/DEBUG=1 configuration to the QOM scripts so this is possible without code modification.