TSAN 为 QEMU 构建,找不到 longjmp buf



使用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的已知问题,并且——通过coroutine=gthread似乎在过去的中起作用

但它被移除了(https://patchwork.kernel.org/patch/9704545/)

我尝试了所有ucontext和sigaltstack后端,但失败了

我的问题是,TSAN仍然适用于当前版本吗?(qemu 4.2.0(

向QEMU添加TSan支持的工作正在进行中,目前还没有发布。

我们正在进行的工作分支在这里:https://github.com/rf972/qemu/tree/tsan_v0.

值得一提的是,我们的WIP分支包含几个重要的补丁,这些补丁是我们在该分支从Emilio Cota那里获得的。

此修补程序似乎与您的问题有关。它修改了您上面提到的相同区域,并引入了对协同程序ucontext的光纤注释的支持。

相关内容

  • 没有找到相关文章

最新更新