Solaris 11.4.81.193 detects sigsetjmp/siglongjmp between threads and aborts
Host environment
- Operating system: Solaris 11
- OS/kernel version: 11.4.81.193.1
- Architecture: SPARC
- QEMU flavor: all
- QEMU version: 10.1.50 (v10.1.0-924-g81e3121bef-dirty)
- QEMU command line:
./qemu-system-x86_64 -cdrom FreeBSD-14.3-RELEASE-amd64-bootonly.iso nhb.qcow2
Emulated/Virtualized environment
- Operating system:
- OS/kernel version:
- Architecture:
Description of problem
Solaris 11.4 now detects setjmp/longjmp attempting to switch between threads and aborts the process, breaking the QEMU co-routine design. QEMU was compiled on this system with gcc-14.2.0. There does not seem to be an option to disable detection of this error.
Steps to reproduce
- Attempt to start any qemu on a current Solaris
Additional information
Starting program: /opt/qemu/build/qemu-system-x86_64 -cdrom /expool/qemuimages/FreeBSD-14.3-RELEASE-amd64-bootonly.iso /var/tmp/nhb.qcow2
[Thread debugging using libthread_db enabled]
warning: could not convert 'mutex_t' from the host encoding (ISO-8859-1) to UTF-32.
This normally should not happen, please file a bug report.
[New LWP 2 ]
[New LWP 3 ]
[New LWP 4 ]
[New Thread 1 (LWP 1)]
[New LWP 5 ]
Authorization required, but no authorization protocol specified
[New LWP 6 ]
[New LWP 7 ]
[New LWP 8 ]
[New LWP 9 ]
[New LWP 10 ]
[New LWP 11 ]
[New LWP 12 ]
[New LWP 13 ]
[New LWP 14 ]
[New LWP 15 ]
[New LWP 16 ]
[New LWP 17 ]
[New LWP 18 ]
[New LWP 19 ]
[New LWP 20 ]
[New LWP 21 ]
[New LWP 22 ]
[New LWP 23 ]
[New LWP 24 ]
[New LWP 25 ]
[New LWP 26 ]
[New LWP 27 ]
[New LWP 28 ]
[New LWP 29 ]
[New LWP 30 ]
[New LWP 31 ]
[New LWP 32 ]
[New LWP 33 ]
[New LWP 34 ]
[New LWP 35 ]
[New LWP 36 ]
[New LWP 37 ]
[New LWP 38 ]
siglongjmp(8407abc8) from thread 1 tries to jump to stack of thread 5
[New Thread 2 ]
[New Thread 3 (LWP 3)]
[New Thread 4 ]
[New Thread 5 ]
[New Thread 6 ]
[New Thread 7 ]
[New Thread 8 ]
[New Thread 9 ]
[New Thread 10 ]
[New Thread 11 ]
[New Thread 12 ]
[New Thread 13 ]
[New Thread 14 ]
[New Thread 15 ]
[New Thread 16 ]
[New Thread 17 ]
[New Thread 18 ]
[New Thread 19 ]
[New Thread 20 ]
[New Thread 21 ]
[New Thread 22 ]
[New Thread 23 ]
[New Thread 24 ]
[New Thread 25 ]
[New Thread 26 ]
[New Thread 27 ]
[New Thread 28 ]
[New Thread 29 ]
[New Thread 30 ]
[New Thread 31 ]
[New Thread 32 ]
[New Thread 33 ]
[New Thread 34 ]
[New Thread 35 ]
[New Thread 36 ]
[New Thread 37 ]
[New Thread 38 ]
Thread 5 received signal SIGABRT, Aborted.
[Switching to Thread 1 (LWP 1)]
0xffffffff7cccb168 in __lwp_sigqueue () from /usr/lib/sparcv9/libc.so.1
(gdb) bt
#0 0xffffffff7cccb168 in __lwp_sigqueue () at /usr/lib/sparcv9/libc.so.1
#1 0xffffffff7cc19054 in raise () at /usr/lib/sparcv9/libc.so.1
#2 0xffffffff7cbe93e4 in abort () at /usr/lib/sparcv9/libc.so.1
#3 0xffffffff7cbea334 in abort_bad_siglongjmp () at /usr/lib/sparcv9/libc.so.1
#4 0xffffffff7cbdab40 in siglongjmp () at /usr/lib/sparcv9/libc.so.1
#5 0xffffffff7e1ec9f0 in qemu_coroutine_switch (from_=0x0, to_=0x8407ab60, action=COROUTINE_ENTER)
at ../util/coroutine-ucontext.c:329
#6 0xffffffff7e1eb0b4 in qemu_aio_coroutine_enter (ctx=0x8009d100, co=<optimized out>) at ../util/qemu-coroutine.c:293
#7 0xffffffff7e1ecf7c in thread_pool_completion_bh (opaque=0x802cff10) at ../util/thread-pool.c:200
#8 0xffffffff7e1e8edc in aio_bh_call (bh=0x802cffc0) at ../util/async.c:172
#9 0xffffffff7e1e9028 in aio_bh_poll (ctx=0x8009d100) at ../util/async.c:219
#10 0xffffffff7e1ce418 in aio_dispatch (ctx=0x8009d100) at ../util/aio-posix.c:436
#11 0xffffffff7e1e8c84 in aio_ctx_dispatch (source=<optimized out>, callback=0x0, user_data=0x0) at ../util/async.c:361
#12 0xffffffff632e3020 in g_main_context_dispatch () at /usr/lib/sparcv9/libglib-2.0.so.0
#13 0xffffffff7e1ea97c in glib_pollfds_poll () at ../util/main-loop.c:290
#14 os_host_main_loop_wait (timeout=17647148) at ../util/main-loop.c:313
#15 main_loop_wait (nonblocking=<optimized out>) at ../util/main-loop.c:592
#16 0xffffffff7ddf62d0 in qemu_main_loop () at ../system/runstate.c:905
#17 0xffffffff7e107714 in qemu_default_main (opaque=0x0) at ../system/main.c:50
#18 0xffffffff7e1077fc in main (argc=4, argv=0xffffffff7ffff668) at ../system/main.c:93
(gdb)