使用 TSAN 构建 QEMU 没有任何问题,但在启动过程中会出现致命问题
ThreadSanitizer: can't find longjmp buf
FATAL: ThreadSanitizer CHECK failed: ../../../../src/libsanitizer/tsan/tsan_interceptors.cc:544 "((0)) != (0)" (0x0, 0x0)
#0 <null> <null> (libtsan.so.0+0x891b4)
#1 <null> <null> (libtsan.so.0+0xa74ae)
#2 <null> <null> (libtsan.so.0+0x2b0b2)
#3 siglongjmp <null> (libtsan.so.0+0x2cb64)
#4 qemu_coroutine_switch util/coroutine-ucontext.c:221 (qemu-system-x86_64+0xc0bcbd)
#5 qemu_aio_coroutine_enter util/qemu-coroutine.c:147 (qemu-system-x86_64+0xc089c7)
#6 qemu_coroutine_enter util/qemu-coroutine.c:170 (qemu-system-x86_64+0xc08b5a)
...
#23 main /root/qemu-4.2.0/vl.c:4436 (qemu-system-x86_64+0x5c92ec)
#24 __libc_start_main <null> (libc.so.6+0x271e2)
#25 _start <null> (qemu-system-x86_64+0x2c6b9d)
它看起来像是 TSAN 的已知问题,并且 --with-coroutine=gthread 似乎在过去有效
但它已被删除(https://patchwork.kernel.org/patch/9704545/)
我尝试了所有 ucontext 和 sigaltstack 后端,但失败了
我的问题是,TSAN 是否仍然适用于当前版本?(qemu 4.2.0)