From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [63.128.21.124]) by sourceware.org (Postfix) with ESMTP id DF8023858D29 for ; Fri, 1 Jan 2021 10:08:25 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org DF8023858D29 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-512-pESL-MiBNbiPotWcctDA3A-1; Fri, 01 Jan 2021 05:08:23 -0500 X-MC-Unique: pESL-MiBNbiPotWcctDA3A-1 Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.phx2.redhat.com [10.5.11.15]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 323971005513 for ; Fri, 1 Jan 2021 10:08:22 +0000 (UTC) Received: from host1.jankratochvil.net (ovpn-112-104.ams2.redhat.com [10.36.112.104]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 975D16362A for ; Fri, 1 Jan 2021 10:08:21 +0000 (UTC) Date: Fri, 1 Jan 2021 11:08:18 +0100 From: Jan Kratochvil To: libc-alpha@sourceware.org Subject: [patch] Make _thread_db_sizeof_pthread public for Sanitizers Message-ID: <20210101100818.GA368024@host1.jankratochvil.net> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.15 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset=us-ascii Content-Disposition: inline X-Spam-Status: No, score=-11.5 required=5.0 tests=BAYES_00, DKIMWL_WL_HIGH, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H4, RCVD_IN_MSPIKE_WL, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 01 Jan 2021 10:08:28 -0000 Sanitizers currently contain ugly list of glibc versions and their sizeof(struct pthread). https://github.com/llvm/llvm-project/blob/main/compiler-rt/lib/sanitizer_common/sanitizer_linux_libcdep.cpp#L276 This list is not much maintained causing SEGVs of Sanitizers: $ echo 'int main(){}'|clang -g -fsanitize=leak -x c++ -;./a.out Tracer caught signal 11: addr=0x7f1087f51f40 pc=0x4222c8 sp=0x7f1086effd40 ==234624==LeakSanitizer has encountered a fatal error. ==234624==HINT: For debugging, try setting environment variable LSAN_OPTIONS=verbosity=1:log_threads=1 ==234624==HINT: LeakSanitizer does not work under ptrace (strace, gdb, etc) I would find better if just glibc made the value public, Sanitizers can then read it by dlsym(): http://people.redhat.com/jkratoch/lsan-pthread.patch diff --git a/nptl/Versions b/nptl/Versions index aed118e717..4144acbac7 100644 --- a/nptl/Versions +++ b/nptl/Versions @@ -297,6 +297,10 @@ libpthread { pthread_clockjoin_np; } + GLIBC_2.33 { + _thread_db_sizeof_pthread; + } + GLIBC_PRIVATE { __pthread_initialize_minimal; __pthread_clock_gettime; __pthread_clock_settime;