ThreadSanitizer темы просто замерзают навсегда - PullRequest
0 голосов
/ 16 января 2020

Я пытаюсь профилировать программу с помощью aarch64 g cc. Программа выдает некоторые выходные сообщения tsan, затем кажется, что некоторые потоки (с выводами?) Просто останавливаются. Процесс не обрабатывает sh или около того, просто некоторые потоки, кажется, застряли в определенных функциях цана навсегда. Пример Callstack застрявшего потока:

User Stack:

[Switching to thread 166 (LWP 2663)]
#0  __sanitizer::__internal_syscall (arg6=0, arg5=0, arg4=0, arg3=2, arg2=0, arg1=548659793000, nr=98)
    at /home/tcwg-buildslave/workspace/tcwg-make-release/builder_arch/amd64/label/tcwg-x86_64-build/target/aarch64-linux-gnu/snapshots/gcc.git~linaro-7.3-2018.05/libsanitizer/sanitizer_common/sanitizer_syscall_linux_aarch64.inc:111
111     /home/tcwg-buildslave/workspace/tcwg-make-release/builder_arch/amd64/label/tcwg-x86_64-build/target/aarch64-linux-gnu/snapshots/gcc.git~linaro-7.3-2018.05/libsanitizer/sanitizer_common/sanitizer_syscall_linux_aarch64.inc: No such file or directory.
(gdb) bt
#0  __sanitizer::__internal_syscall (arg6=0, arg5=0, arg4=0, arg3=2, arg2=0, arg1=548659793000, nr=98)
    at /home/tcwg-buildslave/workspace/tcwg-make-release/builder_arch/amd64/label/tcwg-x86_64-build/target/aarch64-linux-gnu/snapshots/gcc.git~linaro-7.3-2018.05/libsanitizer/sanitizer_common/sanitizer_syscall_linux_aarch64.inc:111
#1  __sanitizer::BlockingMutex::Lock (this=this@entry=0x7fbeac0c68 <__tsan::thread_registry_placeholder+24>)
    at /home/tcwg-buildslave/workspace/tcwg-make-release/builder_arch/amd64/label/tcwg-x86_64-build/target/aarch64-linux-gnu/snapshots/gcc.git~linaro-7.3-2018.05/libsanitizer/sanitizer_common/sanitizer_linux.cc:529
#2  0x0000007fbe7e15f4 in __sanitizer::GenericScopedLock<__sanitizer::BlockingMutex>::GenericScopedLock (mu=0x7fbeac0c68 <__tsan::thread_registry_placeholder+24>, this=<synthetic pointer>)
    at /home/tcwg-buildslave/workspace/tcwg-make-release/builder_arch/amd64/label/tcwg-x86_64-build/target/aarch64-linux-gnu/snapshots/gcc.git~linaro-7.3-2018.05/libsanitizer/sanitizer_common/sanitizer_mutex.h:177
#3  __sanitizer::ThreadRegistry::FinishThread (this=0x7fbeac0c50 <__tsan::thread_registry_placeholder>, tid=171)
    at /home/tcwg-buildslave/workspace/tcwg-make-release/builder_arch/amd64/label/tcwg-x86_64-build/target/aarch64-linux-gnu/snapshots/gcc.git~linaro-7.3-2018.05/libsanitizer/sanitizer_common/sanitizer_thread_registry.cc:251
#4  0x0000007fbe7c71a8 in __tsan::ThreadFinish (thr=thr@entry=0x7f1e09f280)
    at /home/tcwg-buildslave/workspace/tcwg-make-release/builder_arch/amd64/label/tcwg-x86_64-build/target/aarch64-linux-gnu/snapshots/gcc.git~linaro-7.3-2018.05/libsanitizer/tsan/tsan_rtl_thread.cc:289
#5  0x0000007fbe771980 in __tsan::DestroyThreadState ()
    at /home/tcwg-buildslave/workspace/tcwg-make-release/builder_arch/amd64/label/tcwg-x86_64-build/target/aarch64-linux-gnu/snapshots/gcc.git~linaro-7.3-2018.05/libsanitizer/tsan/tsan_interceptors.cc:831
#6  0x0000007fbe70ed6c in ?? () from /lib/libpthread.so.0
#7  0x0000007f2605d870 in ?? ()


Kernel Stack:

[<ffffff80080854c4>] __switch_to+0x80/0xbc
[<ffffff8008110b78>] futex_wait_queue_me+0xb0/0xcc
[<ffffff8008111680>] futex_wait+0xd0/0x1b8
[<ffffff8008112e64>] do_futex+0xd0/0x928
[<ffffff800811380c>] SyS_futex+0x150/0x154
[<ffffff80080832c0>] el0_svc_naked+0x34/0x38
[<ffffffffffffffff>] 0xffffffffffffffff
...