bug-binutils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Bug gprofng/30360] [gprofng collect] Seg. Fault when application uses s


From: cvs-commit at gcc dot gnu.org
Subject: [Bug gprofng/30360] [gprofng collect] Seg. Fault when application uses std::thread
Date: Mon, 17 Apr 2023 20:04:48 +0000

https://sourceware.org/bugzilla/show_bug.cgi?id=30360

--- Comment #2 from cvs-commit at gcc dot gnu.org <cvs-commit at gcc dot 
gnu.org> ---
The master branch has been updated by Vladimir Mezentsev
<vmezents@sourceware.org>:

https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=35fab451d9ec11a7e02df750fb24feb21e9732b8

commit 35fab451d9ec11a7e02df750fb24feb21e9732b8
Author: Vladimir Mezentsev <vladimir.mezentsev@oracle.com>
Date:   Sun Apr 16 13:55:48 2023 -0700

    gprofng: 30360 Seg. Fault when application uses std::thread

    We interpose a lot of libC functions (dlopen, fork, pthread_create, etc.).
    Some of these functions have versions. For example,

    % nm -D /lib64/gprofng/libgp-collector.so  | grep thread_create@ | sort
    000000000004b420 T pthread_create@GLIBC_2.34
    000000000004b490 T pthread_create@GLIBC_2.17
    000000000004b500 T pthread_create@GLIBC_2.2.5
    000000000004b570 T pthread_create@GLIBC_2.1
    000000000004b5e0 T pthread_create@GLIBC_2.0

    Our library does not set the default version for symbols.
    This is correct because we don't know which libC will be used.

    gcc and g++ links differently the version symbols when the default version
is
    not set. c-linker is using our pthread_create@GLIBC_2.34 and c++-linker is
using
    our pthread_create@GLIBC_2.0 by default.

    The current implementation of the interposed functions is:
      If we are in our pthread_create@GLIBC_<NN>,
      we use dlvsym (dlflag, "pthread_create", "GLIBC_<NN>") to find and call
      the same function from libC.
    In the test from PR 30360, pthread_create@GLIBC_2.0 is not in the current
libC.
    We need to call the default version symbol from libC.

    gprofng/ChangeLog
    2023-04-16  Vladimir Mezentsev  <vladimir.mezentsev@oracle.com>

            PR gprofng/30360
            * libcollector/iotrace.c: Find and call a default libC version
symbol.
            * libcollector/dispatcher.c: Likewise.
            * libcollector/iotrace.c: Likewise.
            * libcollector/linetrace.c: Likewise.
            * libcollector/mmaptrace.c: Likewise.
            * libcollector/synctrace.c: Likewise.
            * libcollector/collector.h (REAL_DCL): Remove an unused argument.

-- 
You are receiving this mail because:
You are on the CC list for the bug.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]