Bug 24886 - disable support for glibc mcheck
Summary: disable support for glibc mcheck
Status: RESOLVED FIXED
Alias: None
Product: gdb
Classification: Unclassified
Component: build (show other bugs)
Version: unknown
: P2 normal
Target Milestone: ---
Assignee: Not yet assigned to anyone
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2019-08-06 15:29 UTC by Frank Ch. Eigler
Modified: 2019-08-06 19:14 UTC (History)
1 user (show)

See Also:
Host:
Target:
Build:
Last reconfirmed:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Frank Ch. Eigler 2019-08-06 15:29:24 UTC
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
Comment 1 Tom Tromey 2019-08-06 17:02:36 UTC
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
Comment 2 Frank Ch. Eigler 2019-08-06 19:13:45 UTC
Pushed, thanks for the quick review!
Comment 3 cvs-commit@gcc.gnu.org 2019-08-06 19:14:00 UTC
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.