From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR04-VI1-obe.outbound.protection.outlook.com (mail-eopbgr80078.outbound.protection.outlook.com [40.107.8.78]) by sourceware.org (Postfix) with ESMTPS id F0F47389247A for ; Tue, 6 Apr 2021 10:39:18 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org F0F47389247A Received: from AS8PR04CA0073.eurprd04.prod.outlook.com (2603:10a6:20b:313::18) by DB9PR08MB6540.eurprd08.prod.outlook.com (2603:10a6:10:260::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3999.28; Tue, 6 Apr 2021 10:39:13 +0000 Received: from VE1EUR03FT026.eop-EUR03.prod.protection.outlook.com (2603:10a6:20b:313:cafe::b6) by AS8PR04CA0073.outlook.office365.com (2603:10a6:20b:313::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4020.16 via Frontend Transport; Tue, 6 Apr 2021 10:39:13 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; sourceware.org; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;sourceware.org; dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 63.35.35.123 as permitted sender) receiver=protection.outlook.com; client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com; Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by VE1EUR03FT026.mail.protection.outlook.com (10.152.18.148) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3999.29 via Frontend Transport; Tue, 6 Apr 2021 10:39:13 +0000 Received: ("Tessian outbound 34291f7cb530:v90"); Tue, 06 Apr 2021 10:39:12 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: 92430d6e56e70773 X-CR-MTA-TID: 64aa7808 Received: from 22ab163570e9.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 6044140C-F171-4C6E-B69B-847EF0E245F5.1; Tue, 06 Apr 2021 10:38:46 +0000 Received: from EUR04-DB3-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 22ab163570e9.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Tue, 06 Apr 2021 10:38:46 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=nUrfgiSCW5y0I82TeNvg92eiENnIAkQARcO9Edi49BxB1GUcIK7aEzWuKL3utd5Fic9nO0HIzDA0qBG3rlslnoAYOety+ihatsuQCZoHlnU0N8gQf/zY3mZ2LJxFfxokvqt+/ypf/AQzCnWYL5UxwejCm/ooFbQj1576R9nVafuwtCTjc4Mx79b7l12pARVklXrpdL/4Qq2XTLyRCFBircx/V7BIdmYubC3aScEkGSUR53ZxNDnIKsy6SjB/9wtrcYON6ZqmRP5w2+JFsVyKFaMBFOakzkDEqLKTlZe0+kHWXmUpWT+jcqyitRN1aB243omv5gJ/DsHaifRob3vbwg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=jK2GbodhXcwaG19nVJc5CI9VR2EAayLK29YTfD1tjIc=; b=PPoIlNWC6KKRDx04jGft+5UhaW792TFzqthVeoOpRY6xVDWWaFEMF1V0JtYOLxc0HOUfE1MIDeSOB2/rvgVY8mw4A3vEkc/PDa8hvbTfFC/IuxZ8uI0YiPiTPTPPEMf5RbSWLORQq/kxkn77nwi78gC5etGXBRSMNBPoMuAqEAqpsvzz7jvqJrF5WGOAOS7HQpA5/sgaM4OVLk1drjbT7tOMdroUG/ykesixN2kawJnOGR0kU3VhCxN/0V1Mv4uIXPLypEU4PBr3XcCr2fF7La7D79QWe/ol0IuI/doaLffKZQSvw9aC+Jg9jG46tzdplSuvtWkv0A8MexB/g5hUKw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none Authentication-Results-Original: maskray.me; dkim=none (message not signed) header.d=none;maskray.me; dmarc=none action=none header.from=arm.com; Received: from PA4PR08MB6320.eurprd08.prod.outlook.com (2603:10a6:102:e5::9) by PAXPR08MB6800.eurprd08.prod.outlook.com (2603:10a6:102:137::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3999.28; Tue, 6 Apr 2021 10:38:40 +0000 Received: from PA4PR08MB6320.eurprd08.prod.outlook.com ([fe80::c99f:671d:bb2c:f20b]) by PA4PR08MB6320.eurprd08.prod.outlook.com ([fe80::c99f:671d:bb2c:f20b%7]) with mapi id 15.20.3999.032; Tue, 6 Apr 2021 10:38:40 +0000 Date: Tue, 6 Apr 2021 11:38:38 +0100 From: Szabolcs Nagy To: Fangrui Song Cc: Florian Weimer , libc-alpha@sourceware.org Subject: Re: dlpi_tls_data is incorrect NULL when dlpi_tls_modid>0 Message-ID: <20210406103837.GJ23289@arm.com> References: <87a6qf3f2w.fsf@mid.deneb.enyo.de> Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.9.4 (2018-02-28) X-Originating-IP: [217.140.106.55] X-ClientProxiedBy: LO4P123CA0181.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:1a4::6) To PA4PR08MB6320.eurprd08.prod.outlook.com (2603:10a6:102:e5::9) MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from arm.com (217.140.106.55) by LO4P123CA0181.GBRP123.PROD.OUTLOOK.COM (2603:10a6:600:1a4::6) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3999.27 via Frontend Transport; Tue, 6 Apr 2021 10:38:39 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 225640ab-5892-4d64-8638-08d8f8e83833 X-MS-TrafficTypeDiagnostic: PAXPR08MB6800:|DB9PR08MB6540: X-Microsoft-Antispam-PRVS: x-checkrecipientrouted: true NoDisclaimer: true X-MS-Oob-TLC-OOBClassifiers: OLM:8882;OLM:8882; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: iuRlOq95/zS8zPU/0CZvPQw6FfyxVnwMz5evNhmqosopMUkf3Fe7WSmahgZ9u9Uf8s7rZwYuTEtJouXcdiEJHPiVdLK9IUogtJqXYE7X6PVO3GUfvAqXZZUnt6nHU3b/s+fpAzQiz1sf6DmvwWTylOflt6Z3qrEAgSiuc6j/W3n1r3O42zK9eyt8GY1l40lX6VYEoWre700B7tZDcGN2NSedUW0/JRCnPOyyHlSArgsPzsCzwaot6IaUSl947XDkcxojSPMYycw/djeho5JyOswi4tZc4l9ja4sEHdcEAJo7uoOTHdfHsmyYwJ9JVAOmSSDj7UJMb61+oIPq19sd0kL0yPYl3UoneYGJmqlNzXWgS9y1vve3lL17q6gNovCnX2B9Go/wve2eR09928+oTgsSzj/TtZS7L3XSrzWPcFjjIasbVu8aEsSapkNlFCnun2lO4cQ4w/J9urzAe4Du3KnFgXi93CFrRBjO09DkIcHNV9tm1xCYQULbD2Du5RwQmOCHR69fTlombthtw3EIQaNAgKMQ71fDD31wxAomyVMOQFPPwuI5QYQxTzXcWMl+v1syLu2z/NS/sKN5sKlCtozMrAkCstxmPFbxcJdmyp3reF9ow7MbgiKW+UBkmxi1q4w2M4UsTHMFcUhP0xrcvdy9OCvbFrKSv+KGr1jcAfELFy8S0BlOkImRNyUZv5C0eKpJn8WaVHXzpTqDedxTsWop99GQY50rEw5hrSg7+cu7dVg9lvf976Er1Cz566UjnFuJh/4lZsiBkMv9ndpqlDLrVql6McPYX4jbZGguMYo= X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:PA4PR08MB6320.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(376002)(136003)(366004)(396003)(346002)(39860400002)(53546011)(8886007)(7696005)(1076003)(5660300002)(478600001)(52116002)(38350700001)(55016002)(966005)(316002)(38100700001)(66556008)(16526019)(66946007)(186003)(33656002)(8676002)(36756003)(4326008)(8936002)(956004)(2616005)(83380400001)(2906002)(44832011)(26005)(86362001)(66476007)(6916009)(781001); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData: =?utf-8?B?N3B0M05PcWk2czNtQ0dFMTdZdEVVUHBycGNUeEhDR21qWFI3bEZMaG9vcVF0?= =?utf-8?B?bHo1T3BTTUM2WVdEWXVMRE01L3R2OVZsTjl3YWlhYWh4SmtRb0tpTGpLWW91?= =?utf-8?B?VDg5NHlyeVdSZ1FVTkdvMVJ0UmdEUE5PRkpSM081RE5TdFMyektwWmwxWitE?= =?utf-8?B?bGNCMmFXUUVRTThEVnFqMkV6RGVXcFNDTWlmZUVrQUZneGxBSDNrWUFEVk9z?= =?utf-8?B?MXRVWXBURytYalg4dXJJWEhOaGl2TWM1L2FoL3JmSitPQjBRbnh4bnV3Zmg4?= =?utf-8?B?TGFrbStKR2ovMHRXY2Z4ZUxjSmw4ZVcrRk8zQlF3cytrT3cwSjg3Rmt2UHh3?= =?utf-8?B?ME1YaFhETXRyajFVWlVINXpNME4xWnhPaVNGTnV5Y01sbzBiMEh2MGlZVUdM?= =?utf-8?B?VmpiSjlHZU5ZclpNQ3dxcHZTUlBxeG9yQzdScTJ1TXpWSnJJaG9DRUhGdkxi?= =?utf-8?B?WnlibmpHT3dPaTFjUEpzTFVydnE2d3A1V2NrSFhYVE5OUEVaSDd1TFEwTGlj?= =?utf-8?B?QXZERFFPSkxUSjcwYmRFVERLdFNieURnQkticTlxOXpSU3FJRzZGREZuWDBu?= =?utf-8?B?V01tZDhrOEhsN3ZQTTZFcmxRTld3Y2hEMzBrNy9lK0pQeHFFTGtmV3QyNTdZ?= =?utf-8?B?MTYwbzNJb241UkhmR0ovcXBFZmxEN1BLSEJOUUs2djE5YSs1YzkwQWdWRUxG?= =?utf-8?B?THdGd0VrUC9IL3NEZlUzN1psTFl3S1dsdlNOMFd6NllxZHh6MWdLdGFmcmlT?= =?utf-8?B?RHJuZEpMelYrNWNuY0FqTllLQitXTnN1WXNnUDc4akxvbGx4QjBJN25jaXZ6?= =?utf-8?B?MFRHQ2NOYjQ2OVBlbmNENEJtbEFkaVg3cDFQcU5YU0JNK3preDlFd2l1Zm4y?= =?utf-8?B?YmhxTmNzMGpjcHIvOXZpaGQvNGkxNWtxQktic3orbFU2MWh6Qndxc040SzBZ?= =?utf-8?B?NUpNYS9ReVQyYkJPV3RLT3ZzRVgrSGpXRnJoMUJoRzZPdTRRWklRQVhpM2N4?= =?utf-8?B?WS94Y2xjVTRmdHFFMUhpcHhUYlhGcVh2YnRhcHJ1Vmg3V3lwOWNxUm1MWURx?= =?utf-8?B?ZWMybFN4VTh2d2cxVENEY0taeG9KMmdJV0lqeDdVQ0w4N2g3MjhmSTF3bVlZ?= =?utf-8?B?a2ZMQnJQSE5TemNxNUpwTFJsUDVOL2d5UG01WXdzMWJDWCsxKzNsbi9IUnhl?= =?utf-8?B?S1FxOGkxS0NPNzFORmlpeko5UnAxQk12WUV5SklyTzBwK3A2TDNDYWZidkM3?= =?utf-8?B?UURQMW4vRnVaNkY0b1RBblN5NTU5ZnozS3MvcHErcHl6b29JRUxCaGcyS0VE?= =?utf-8?B?TklhS1hMMDJxT3NwdXU3RDFudHc3QTRrU0trQ25adXI5Q3RZSjJkbUFudE84?= =?utf-8?B?NVBhNzlDNVNVUGs5SzRaeFpQUHkzbEhQWUxMNnJVNkZVQ1MweEVQSGVKT0cy?= =?utf-8?B?bjZwbkwrbktBMkc1SVAwNlBYek9NUGVrR05MV1hVZkVBT0c3ckdYTkRpc2di?= =?utf-8?B?STJWT0dhOU82N1JZZlJjZ1kzbjFSZzR3U204YUdzMENMaXp2TnBocXZ1U3NO?= =?utf-8?B?SmtCQ1JVaCtXSUQ1SmFGZUpKTE1CU3VQdXZQZUhuRVFRd2Q3MGljNWtZY3Ji?= =?utf-8?B?alJxYStoUThXRlNnMm1lL3JHZTJ3My8wZnFTY2FVMEhCNEczclhZRkd3Nkk4?= =?utf-8?B?L0JrOWNkSTd4dlVaaDNnTU16dWZBT1hBMUZZRXliVHR5RjBlcjlQK1Y2QWs4?= =?utf-8?Q?crdr2ITPs3cd7dfCDWD0X7IZ22OuCaYYHEqm8zt?= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PAXPR08MB6800 Original-Authentication-Results: maskray.me; dkim=none (message not signed) header.d=none;maskray.me; dmarc=none action=none header.from=arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: VE1EUR03FT026.eop-EUR03.prod.protection.outlook.com X-MS-Office365-Filtering-Correlation-Id-Prvs: da026f2e-949d-4cdb-0f73-08d8f8e82456 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: IbKvFYf27KNI0cwRBmEMJvQizf1mMIY3uCt2/ys1O3w9/vepjpumcG3UZMBij3M9HlqfUxLyJMVI+oITsdzTpZdAF7OTXdy6mp/vDpXN74dclGriZWOmnRdsJNawHS/ZoCjs6TLdekjWuNhTavwKg454XerLpJMPslaMerLub11HRfYQM/m3YqXdrb7qTtP8PmfXhz3WGX6t/aacFUK88jRDLVdMniZGXM3mMX/Y2hcNCMI/QsRZiPQX6Kq7HlxDXfjQ2/BMl3SxTsFnvci8FT8WjEFb1Dxvw8QAgcdzuHC3sT1XZ//H1Nuc7RyxLqOtNnJS9oKczNr7iBGQ0rl0lN/QiUfJFMUnXyL0rtZRHgT6+ywASzZFZDrbv3dIVzmJn6tBobmrAc1/gV/lz/iRsn2+7nR0yBQ1ChaOgSL2knn4ze7PMILHeXjp50UTVjnN4YM4PSdiWeB4IHtgcpirI//yOPcNulrVpgMHDNZvbNHhoXBrAajaYUgDm/nxFE1fQ6Q1PVAfxV0JTtmROv6UGWCSrOcz1JN+iE4SfMuyWojETmjX/pvKs6l5zzGVi/y/6VUElOwLaDrm6gKSrra7lzlNeX3OmXgKsBJec4WoxlzOmte/ObxdStjhksb11XZX0yOpwGN+mnkUn+JRVWJnPHylsZeYHzvwQV/w77ooJD8McZ/XK7AR5Yf+Iuig9dw6MHqVovFcb0ccrFixa7yR66ZS7D/UDvE4kBQ2/ChWCIZZrDc1A5nbfbQUOqgZ8cv5 X-Forefront-Antispam-Report: CIP:63.35.35.123; CTRY:IE; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:64aa7808-outbound-1.mta.getcheckrecipient.com; PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com; CAT:NONE; SFS:(4636009)(376002)(136003)(346002)(39860400002)(396003)(36840700001)(46966006)(316002)(70586007)(8886007)(86362001)(33656002)(82310400003)(4326008)(36860700001)(36756003)(70206006)(5660300002)(81166007)(2906002)(1076003)(47076005)(966005)(26005)(336012)(956004)(356005)(478600001)(16526019)(83380400001)(2616005)(186003)(8676002)(7696005)(55016002)(8936002)(53546011)(82740400003)(44832011)(6862004)(781001); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Apr 2021 10:39:13.0609 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 225640ab-5892-4d64-8638-08d8f8e83833 X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[63.35.35.123]; Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com] X-MS-Exchange-CrossTenant-AuthSource: VE1EUR03FT026.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB9PR08MB6540 X-Spam-Status: No, score=-7.9 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, KAM_NUMSUBJECT, MSGID_FROM_MTA_HEADER, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, SPF_PASS, TXREP, UNPARSEABLE_RELAY 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: Tue, 06 Apr 2021 10:39:21 -0000 The 04/04/2021 00:05, Fangrui Song wrote: > On Sat, Apr 3, 2021 at 2:14 AM Florian Weimer wrote: > > * Fangrui Song: > > > I was trying to clean up llvm-project/compiler-rt sanitizers GetTls > > > function https://reviews.llvm.org/D98926 and my change was reverted > > > due to an annoying Ubuntu 16.04 glibc 2.23 bug (seem so on both amd64 > > > and ppc64le) > > > dlpi_tls_data is incorrect NULL when dlpi_tls_modid>0. > > > > > > Thread 1 "tls_race.cpp.tm" hit Breakpoint 6, > > > __sanitizer::CollectStaticTlsRanges (info=0x7fffffffe8d0, size=64, > > > data=0x7fffffffe9d0) at > > > /tmp/llvm/compiler-rt/lib/sanitizer_common/sanitizer_linux_libcdep.cpp:294 > > > 294 if (!info->dlpi_tls_data) > > > (gdb) p *info > > > $5 = {dlpi_addr = 0, dlpi_name = 0x7ffff7ffe6f8 "", dlpi_phdr = > > > 0x400040, dlpi_phnum = 10, dlpi_adds = 10, dlpi_subs = 0, > > > dlpi_tls_modid = 1, dlpi_tls_data = 0x0} > > > > > > This works fine on glibc 2.31. > > > > How have you verified this on glibc 2.31? As far as I can tell, the > > TLS block address assignment happens lazily, and dl_iterate_phdr does > > not trigger it. So it could be the result of different TLS access > > patterns. > > The fix may be https://sourceware.org/bugzilla/show_bug.cgi?id=19826 > > + /* Set up the DTV entry. The simplified __tls_get_addr that > + some platforms use in static programs requires it. */ > + dtv[map->l_tls_modid].pointer.val = dest; > > With this change, static TLS blocks seem to have non-NULL dtv values. > Previously, dlpi_tls_data returned by dl_iterate_phdr may be NULL, if > the TLS data hasn't been touched by the program. > > In sanitizer runtime, I will add another dl_iterate_phdr with the > callback doing __tls_get_addr({dlpi_tls_modid, 0}). > This can ensure static (and also dynamic?) TLS blocks have non-NULL dtv values. i think that works, (non-null dtv value in current thread), but if you control the callback then you can just start it with info.dlpi_tls_data = __tls_get_addr({modid, 0}) no need for a separate dl_iterate_phdr. (note that itanium calls __tls_get_addr with two args) if you do separate dl_iterate_phdr calls then you have to look out for modules concurrently dlopened in between (those can still return 0).