glibc's mcheck library is thread-unsafe. If any of the shared libraries transitively linked/loaded into gdb are multithreaded, this can result in run-time memory corruption. This has been observed to happen beyond the python libraries that the gdb configury already tries to protect against. Please be aware that glibc folks are contemplating removing mcheck functionality, since valgrind / ASAN are better options anyway. Please consider the following patch. I'd be ready to dress it up with ChangeLog et al. as requested. https://sourceware.org/git/?p=binutils-gdb.git;a=commitdiff;h=d158ce37a41ca8b098c81d24cf56fa99535f563e
It seems like a good idea to me. Send the patch to gdb-patches, details in the contribution checklist: https://sourceware.org/gdb/wiki/ContributionChecklist
Pushed, thanks for the quick review!
The master branch has been updated by Frank Ch. Eigler <fche@sourceware.org>: https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=404f29021abaef86a341663444fb069eb1f0282a commit 404f29021abaef86a341663444fb069eb1f0282a Author: Frank Ch. Eigler <fche@redhat.com> Date: Tue Aug 6 11:23:48 2019 -0400 [PR build/24886] disable glibc mcheck support This patch drops gdb's configury support for glibc's mcheck function. It has been observed to cause false abort()s, because it is thread-unsafe yet interposes every malloc/free operation. So if any library transitively used by gdb also uses threads, then these functions can easily corrupt their own checking data. These days, gcc ASAN and valgrind provide high quality checking, and mcheck is apparently itself being slowly deprecated. So, let's stop linking to it. Attached patch drops the autoconf/Makefile machinery for both gdb and gdbserver. No testsuite-visible impact. IMHO not worth mentioning in NEWS. See also: https://sourceware.org/bugzilla/show_bug.cgi?id=9939 gdb/ChangeLog PR build/24886 * configure.ac: Drop enable-libmcheck support. * configure, config.in: Rebuild. * libmcheck.m4: Remove. * acinclude.m4: Don't include it. * Makefile.in: Don't distribute it. * top.c (print_gdb_configuration): Don't mention it. gdb/gdbserver/ChangeLog PR build/24886 * configure.ac: Drop enable-libmcheck support. * configure, config.in: Rebuild. * acinclude.m4: Don't include it.