Re: [RESEND PATCH V10 00/15] iothread: Support tracking and querying IOThread holders
Zhang Chen <[email protected]>
| Newsgroups | gmane.comp.emulators.qemu |
|---|---|
| Message-ID | <CAK3tnv+40pv7-MQMhreivBwv+FrWpjpx9dSKSQ=6fKRxq3w=fA@mail.gmail.com> |
On Tue, Jul 21, 2026 at 8:47 PM Markus Armbruster <[email protected]> wrote: > > With this series applied: > > $ qemu-system-x86_64 -S -display none -chardev id=chr-mon0,backend=stdio -object monitor-hmp,id=mon0,chardev=chr-mon0 -chardev id=chr-mon1,backend=socket,path=test-hmp,server=on,wait=off -object monitor-qmp,id=mon1,chardev=chr-mon1 > QEMU 11.0.90 monitor - type 'help' for more information > (qemu) q > ** > ERROR:../iothread.c:99:iothread_unref: code should not be reached > Bail out! ERROR:../iothread.c:99:iothread_unref: code should not be reached > Aborted (core dumped) qemu-system-x86_64 -S -display none -chardev id=chr-mon0,backend=stdio -object monitor-hmp,id=mon0,chardev=chr-mon0 -chardev id=chr-mon1,backend=socket,path=test-hmp,server=on,wait=off -object monitor-qmp,id=mon1,chardev=chr-mon1 > > Stack backtrace: > > #0 0x00007f182873832c in __pthread_kill_implementation () at /lib64/libc.so.6 > #1 0x00007f18286de15e in raise () at /lib64/libc.so.6 > #2 0x00007f18286c56d0 in abort () at /lib64/libc.so.6 > #3 0x00007f182ac53482 in g_assertion_message[cold] () > at /lib64/libglib-2.0.so.0 > #4 0x00007f182acc1447 in g_assertion_message_expr () > at /lib64/libglib-2.0.so.0 > #5 0x000055ffa06cb50e in iothread_unref > (iothread=0x55ffdb3bd740, holder=0x7ffc6152d8c0) at ../iothread.c:99 > #6 0x000055ffa06cc13a in iothread_put_aio_context > (iothread=0x55ffdb3bd740, holder=0x7ffc6152d8c0) at ../iothread.c:444 > #7 0x000055ffa07d9af6 in monitor_cleanup () at ../monitor/monitor.c:679 > #8 0x000055ffa047ca8c in qemu_cleanup (status=0) at ../system/runstate.c:1046 > #9 0x000055ffa07fccb7 in qemu_default_main (opaque=0x0) at ../system/main.c:51 > #10 0x000055ffa07fcd64 in main (argc=12, argv=0x7ffc6152da98) > at ../system/main.c:93 > Oh~ Thanks for the hmp and qmp monitor case test. I didn't trigger it in the basic monitor test. The root cause is monitor_cleanup unconditionally unregisters all monitors if the global mon_iothread exists. I will fix it in next version. Thanks Chen