-
Notifications
You must be signed in to change notification settings - Fork 1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
CHECK failed: tsan_interceptors_posix.cpp:1987 "((thr->slot)) != (0)" / segfault running Godot 4 with TSAN #1647
Comments
It looks like the problem is here:
A new thread calls into libnvidia-glcore.so which calls calloc before tsan initialization for the thread. What do you have at |
I'm on
I'm unsure so far, I'll keep trying to track down what spawns that thread. It looks like there are a few threads like that:
The rest all seem to have TSAN injected before any other code:
This is where the main thread is:
|
Oh, this is thread start routine. So, yes, libnvidia-glcore.so somehow escapes tsan pthread_create interceptor that should initialize the thread. Perhaps it uses raw clone syscall or something to create it. Debian says it's "non-free" package: |
Yes, unfortunately these are the proprietary NVidia drivers. I'll try to repro with the free Noveau drivers instead. |
Turns out noveau doesn't support my GPU, so I can only use the proprietary drivers :( |
Maybe look into using lavapipe or SwiftShader, which won't use the GPU at all to render Godot. The thread synchronization issue should still occur even if software Vulkan emulation is used. |
I don't think it's actionable on sanitizer side and the history will be kept, so closing for now. |
I'm compiling and running Godot 4.0.2 like so:
TSAN fails a check and segfaults:
I saw another ticket about a different CHECK FAILED (#950), so I figured this could be a bug in TSAN. If this indicates a bug in Godot instead, my bad, feel free to close!
The text was updated successfully, but these errors were encountered: