On Tue, Oct 01, 2013 at 06:44:54PM +0200, Stefan Weil wrote: > Am 01.10.2013 09:29, schrieb Gabriel Kerneis: > > On Tue, Oct 01, 2013 at 07:51:24AM +0200, Stefan Weil wrote: > >> $ wine i386-softmmu/qemu-system-i386 -L pc-bios -cdrom /var/tmp/mini.iso > >> -sdl # or -vnc :1 > >> > >> => Assertion in qemu-coroutine-lock.c:99. > > Could you please provide the backtrace for this? I am curious which of the > > uses > > of qemu_co_queue_restart_all() fails. I wonder if it is a bug in the > > implementation of qemu_in_coroutine() on your platform, or really a rare > > interleaving which exhibits a bug in the logic of coroutine functions. > > > > Here is a GDB protocol. Build environment: > > Windows 7 (64 bit) host > MinGW toolchain (not MinGW-w64 which I usually prefer) > ./configure && make > > $ gdb --args bin/ndebug/mingw32/i386-softmmu/qemu-system-i386 -L pc-bios > -cdrom mini.iso > GNU gdb (GDB) 7.5 > Copyright (C) 2012 Free Software Foundation, Inc. > License GPLv3+: GNU GPL version 3 or later > <http://gnu.org/licenses/gpl.html> > This is free software: you are free to change and redistribute it. > There is NO WARRANTY, to the extent permitted by law. Type "show copying" > and "show warranty" for details. > This GDB was configured as "i686-pc-mingw32". > For bug reporting instructions, please see: > <http://www.gnu.org/software/gdb/bugs/>... > Reading symbols from > c:\home\stefan\src\qemu\qemu.org\qemu\bin\ndebug\mingw32\i386-softmmu\qemu-system-i386.exe...done. > (gdb) b abort > Breakpoint 1 at 0x6b0070 > (gdb) r > Starting program: > c:\home\stefan\src\qemu\qemu.org\qemu\bin\ndebug\mingw32\i386-softmmu\qemu-system-i386.exe > -L pc-bios -cdrom mini.iso > [New Thread 4120.0x19c4] > [New Thread 4120.0x1724] > [New Thread 4120.0x1a98] > [New Thread 4120.0x1854] > [New Thread 4120.0x1bf8] > VNC server running on `::1:5900' > Assertion failed: qemu_in_coroutine(), file > c:/home/stefan/src/qemu/qemu.org/qemu/qemu-coroutine-lock.c, line 99 > [Switching to Thread 4120.0x1a98] > > Breakpoint 1, 0x76118e76 in msvcrt!abort () > from C:\Windows\syswow64\msvcrt.dll > (gdb) i s > #0 0x76118e76 in msvcrt!abort () from C:\Windows\syswow64\msvcrt.dll > #1 0x7611680c in msvcrt!_assert () from C:\Windows\syswow64\msvcrt.dll > #2 0x00518f2d in qemu_co_queue_restart_all (queue=queue@entry=0x6d3fe90) > at c:/home/stefan/src/qemu/qemu.org/qemu/qemu-coroutine-lock.c:99 > #3 0x0040ee81 in tracked_request_end (req=0x6d3fe6c) > at c:/home/stefan/src/qemu/qemu.org/qemu/block.c:1963 > #4 bdrv_co_do_readv (bs=0x3057658, sector_num=<optimized out>, > nb_sectors=4, > qiov=0x733f9d0, flags=<optimized out>) > at c:/home/stefan/src/qemu/qemu.org/qemu/block.c:2675 > #5 0x0040ee52 in bdrv_co_do_readv (bs=0x3055c10, sector_num=<optimized > out>, > nb_sectors=4, qiov=0x733f9d0, flags=<optimized out>) > at c:/home/stefan/src/qemu/qemu.org/qemu/block.c:2645 > #6 0x0040ffbc in bdrv_rw_co_entry (opaque=0x733f968) > at c:/home/stefan/src/qemu/qemu.org/qemu/block.c:2276 > #7 0x00441be8 in coroutine_trampoline (co_=0x3058958) > at c:/home/stefan/src/qemu/qemu.org/qemu/coroutine-win32.c:57 > #8 0x7549bfa2 in KERNEL32!GetQueuedCompletionStatus () > from C:\Windows\syswow64\kernel32.dll > #9 0x03058958 in ?? () > #10 0x7549bf5a in KERNEL32!GetQueuedCompletionStatus () > from C:\Windows\syswow64\kernel32.dll > #11 0x014feff0 in ?? ()
This is an interesting backtrace. The 'current' thread-local variable from coroutine-win32.c is NULL or doesn't have a caller assigned. Please post 'thread apply all bt' so we can identify the other threads. Stefan