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
Leak sanitizer is broken with glibc 2.32 #1342
Comments
I'm facing the same issue on glibc 2.32. I've tried glibc 2.31 and it seems to be working fine. That might have been caused by the TLS-related changes introduced with glibc 2.32 (but that's just my guess). Anyways, as a temporary workaround you can try running your program with |
I'm encountering the same problem however I'm using libc 2.27 + Kernel 5.13.7; works fine with Kernel 5.11.0
Update: Scratch that. Problem w/ kernel 5.13.7 seems to be intermittent like in #1353; it's now working without the |
LSAN_OPTIONS=use_tls=0. |
LSAN seems to have an issue with glibc's TLS functionality that causes it to intermittently crash with SIGSEGV when run virtualized, as it is in our CI. Relevant GitHub issues: * google/sanitizers#1342 * google/sanitizers#1409
LSAN seems to have an issue with glibc's TLS functionality that causes it to intermittently crash with SIGSEGV when run virtualized, as it is in our CI. Relevant GitHub issues: * google/sanitizers#1342 * google/sanitizers#1409
LSAN seems to have an issue with glibc's TLS functionality that causes it to intermittently crash with SIGSEGV when run virtualized, as it is in our CI. Relevant GitHub issues: * google/sanitizers#1342 * google/sanitizers#1409
LSAN seems to have an issue with glibc's TLS functionality that causes it to intermittently crash with SIGSEGV when run virtualized, as it is in our CI. Relevant GitHub issues: * google/sanitizers#1342 * google/sanitizers#1409
Disable TLS for the leak sanitizer due to an issue in glibc 2.32: google/sanitizers#1342
Without this fix, we have randomly been getting CI failures due to LeakSanitizer itself crashing after all the tests in a program have succeeded. This has been happening randomly for a long time, but https://gitlab.freedesktop.org/wayland/weston/-/merge_requests/1486 made it very reliably repeatable in the job x86_64-debian-full-build (and no other job) in the test-subsurface-shot program. --- Fixture 2 (GL) ok: passed 4, skipped 0, failed 0, total 4 Tracer caught signal 11: addr=0x1b8 pc=0x7f6b3ba640f0 sp=0x7f6b2cc77d10 ==489==LeakSanitizer has encountered a fatal error. I was also able to get a core file after twiddling, but there it ended up with lsan aborting itself rather than a segfault. We got some clues that use_tls=0 might work around this, from google/sanitizers#1342 google/sanitizers#1409 and some other projects that have cargo-culted the same workaround. Using that cause more false leaks to appear, so they need to be suppressed. I suppose we are not interested in catching leaks in glib using code, so I opted to suppress g_malloc0 altogether. Pinpointing it better might have required much more slower stack tracing. wl_shm_buffer_begin_access() uses TLS, so no wonder it gets flagged. ld-*.so is simply uninteresting to us, and it got flagged too. Since this might have been fixed already in LeakSanitizer upstream, who knows, leave some notes to revisit this when we upgrade that in CI. This fix seems to make the branch of https://gitlab.freedesktop.org/wayland/weston/-/merge_requests/1486 in my quick testing. Suggested-by: Derek Foreman <derek.foreman@collabora.com> Signed-off-by: Pekka Paalanen <pekka.paalanen@collabora.com>
Please start a new machine with
glibc 2.32
and try to use leak sanitizer (clang version doesn't matter, tried 10 and 11):echo "int main () { return 0; }" > /tmp/fit.c && clang -fsanitize=leak /tmp/fit.c -o /tmp/fit && LSAN_OPTIONS=verbosity=1:log_threads=1 /tmp/fit
The text was updated successfully, but these errors were encountered: