From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-he1eur04on2085.outbound.protection.outlook.com [40.107.7.85]) by sourceware.org (Postfix) with ESMTPS id 8F0B03858D20 for ; Tue, 30 May 2023 13:34:08 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 8F0B03858D20 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=arm.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=QCPmYNK6D3vF/HN3JTtCtBW4Pyw/tkWMZegyfvE8wAc=; b=gLGt/u54mB4hcH048mQh9zTL+MxeoIRe9WNekSUdvqRcrczyDqRFEPuphABvLR6LWyPvmVO9696L6gznEqd1/RN+WDGC2FNAoOOHaKEPSfK0jKvEtC9Y/hmwu+ggMtQBe9bsUi7cLosxIBjBMuJr9QynazW/Ajd4R3eCsRVGxxI= Received: from DUZPR01CA0252.eurprd01.prod.exchangelabs.com (2603:10a6:10:4b5::22) by DBBPR08MB6220.eurprd08.prod.outlook.com (2603:10a6:10:205::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6433.23; Tue, 30 May 2023 13:34:05 +0000 Received: from DBAEUR03FT057.eop-EUR03.prod.protection.outlook.com (2603:10a6:10:4b5:cafe::4b) by DUZPR01CA0252.outlook.office365.com (2603:10a6:10:4b5::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6433.23 via Frontend Transport; Tue, 30 May 2023 13:34:05 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;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; pr=C Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by DBAEUR03FT057.mail.protection.outlook.com (100.127.142.182) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6455.22 via Frontend Transport; Tue, 30 May 2023 13:34:04 +0000 Received: ("Tessian outbound 5bb4c51d5a1f:v136"); Tue, 30 May 2023 13:34:04 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: 0ca7a8d0f78bbbec X-CR-MTA-TID: 64aa7808 Received: from 1fd8eba865ee.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 5E63B3B3-D373-453B-BCA9-59E17ECF78A3.1; Tue, 30 May 2023 13:33:57 +0000 Received: from EUR03-DBA-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 1fd8eba865ee.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Tue, 30 May 2023 13:33:57 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ecgiTnakRkUBkbCvgugpDTbMXtujJz0GHCWNZKmOcFVlDTgnpnYQzkBxZlnpHLL3Yzvc9iSUQM+dKvWlsnyc+XFNsjF9d3aRw1olCwYdlxCsO9lUpWpZMFTY3hfPwhOBKPiFmfwG54FkAeOxb02LYgf47OesJWe+nzi+DFmsUl/BsWEchQ0iwpwHNl5RoiOFrK5EP9uVLD4MguqpeCGb6DeaadLW5lDXjx8h6RKIsBL0Hrg4tgV3UQIwyH0XrgvyYY0BR72+AwJkumrwG/NpTeKV92EV358QLXDZRy2ejULZ0l6rHJIDqmjscXm/6DPkFMqlgDGhP3/97iuGT2j4YQ== 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-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=QCPmYNK6D3vF/HN3JTtCtBW4Pyw/tkWMZegyfvE8wAc=; b=ZPlBWPbFi248k+sG2vS9u2N9a+Ue8v7MhyjIrRwmgCKA7wlZ2Nh7ttFSdYhRoBa3Z00UdzojagYDVLo7E1PIhGrppEgpV3izeNUyYcpijU8TETdKGLQ66ogw26UtK7nTu1OWVDbp0DG7aC3uiyYA/TB9aJ0jSFa0gBO0zh5aVGqFRsNhELXWU1BBsaJ1ukK1ntxuh20ZEp+l5nYPIoTRR1KVTok5tPfe5eutHuf9pXWeuZ5q5X5YoYKT1vXyNy/bPWlh/pRMVnzOW9WxqWya9lpc6a4VABgn9qeUp7nAxfWRJLSKCFNPVqJUAvfWensZ8Qw2gxPgaYtV+MwF0cOK/w== 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 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=QCPmYNK6D3vF/HN3JTtCtBW4Pyw/tkWMZegyfvE8wAc=; b=gLGt/u54mB4hcH048mQh9zTL+MxeoIRe9WNekSUdvqRcrczyDqRFEPuphABvLR6LWyPvmVO9696L6gznEqd1/RN+WDGC2FNAoOOHaKEPSfK0jKvEtC9Y/hmwu+ggMtQBe9bsUi7cLosxIBjBMuJr9QynazW/Ajd4R3eCsRVGxxI= Authentication-Results-Original: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; Received: from DB9PR08MB7179.eurprd08.prod.outlook.com (2603:10a6:10:2cc::19) by DB4PR08MB8008.eurprd08.prod.outlook.com (2603:10a6:10:38c::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6433.23; Tue, 30 May 2023 13:33:55 +0000 Received: from DB9PR08MB7179.eurprd08.prod.outlook.com ([fe80::242d:33fe:1c48:bd8]) by DB9PR08MB7179.eurprd08.prod.outlook.com ([fe80::242d:33fe:1c48:bd8%7]) with mapi id 15.20.6433.022; Tue, 30 May 2023 13:33:55 +0000 Date: Tue, 30 May 2023 14:33:41 +0100 From: Szabolcs Nagy To: Florian Weimer , libc-alpha@sourceware.org Subject: Re: [PATCH v3] elf: Make more functions available for binding during dlclose (bug 30425) Message-ID: References: <875y8aw3ut.fsf@oldenburg.str.redhat.com> Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: <875y8aw3ut.fsf@oldenburg.str.redhat.com> X-ClientProxiedBy: LO4P265CA0235.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:315::12) To DB9PR08MB7179.eurprd08.prod.outlook.com (2603:10a6:10:2cc::19) MIME-Version: 1.0 X-MS-TrafficTypeDiagnostic: DB9PR08MB7179:EE_|DB4PR08MB8008:EE_|DBAEUR03FT057:EE_|DBBPR08MB6220:EE_ X-MS-Office365-Filtering-Correlation-Id: 864b5773-bf2c-4c7e-be5d-08db611289a8 x-checkrecipientrouted: true NoDisclaimer: true X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: JjZ2Tsv3y2NWfWfebmj9KUL7blk5xnCOtyLDlXw/oX/bRt6kB6DQHGoimbTGg6FF7BhzhrFyJoc7qVt8eBoK1OZsmOt+gO8PoL/uYNTBslpO/52dFE0QWm+DFfVWJTxX0gsnWPtRyM4XNK3hqsDnVePksZZXzvH5DjwBNZer6qBQ3Q7kthSkgmlgo7OiNft99QLKk/XyK7+DZf73I7dnLjbIh0iOOgIzZrh5/gIriI9vgXJPYOd22SKLrA9odHJiWesmy6YLlLz0zmb7fhKu39LXjJDh5ah3Otg4TCe8Qp9wnMl521p5J9d8H+AJMwNDfvZgTqn7hGTt05ZYaf3Q7y8zhqVj3vyNXBDumA+tdQnJKKlTrsViPJtlZP5L9AdCaqnw6kOZW0NCXbq2lIyCKbL/2LEaItxGkn76tJFMc3Gpgde8Fjc0hKdbNjW7is03Ee76Hc/rLKlsZ7DWjY1Y2t9nKHbRKStnFPfQlaEH8dROjN8e0HDEl9fBEYap2Iva6ANkbSrqrqoksP5648aNrOA3cEwGPwMieP3gWcMIbfiKRFB7fnHcc8giucRJHEowrPvSGg/yZrscFFig+/yV3hifvO1Z8HUWEIU5928jK3kARr9hB7LaUUgEFrdlKFmN X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:DB9PR08MB7179.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230028)(4636009)(39850400004)(376002)(396003)(366004)(136003)(346002)(451199021)(66946007)(66556008)(66476007)(316002)(478600001)(36756003)(86362001)(6512007)(26005)(6506007)(186003)(41300700001)(8936002)(8676002)(44832011)(2906002)(83380400001)(5660300002)(6486002)(6666004)(38100700002)(2616005)(131093003);DIR:OUT;SFP:1101; X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB4PR08MB8008 Original-Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DBAEUR03FT057.eop-EUR03.prod.protection.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 309d051c-fd9f-4b62-6991-08db611283a3 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: V5ZS7K/pofHaz84PzwUlrbU01J6TdbLNJ7IPrat1oJ/H9q5KXIu7UU8i8oLLgd2Wtk+baj0OqtHGh6OsRcZ9dczkTmYQYSNmPM/ej6294+sKEYwNYjTNyxirZvWh1tK5/UcoVM9x/NOCa8jKwNAjTNPLw/0uiDNg5/c/wizuTrmZwEqbDTgEjO4RrSaQixmTtrBSyXXVtRjW6Px9c0jn+05PfLekOtpWzlu/HMIgol/E973ecce3VHhCpQWG60UQl2j6H2aZGJNe06qviK9IKUZMOfg9/8YxlcGOIu328M77bA4vsjNhVx2JWzGnn3HFC6RK0VYysmIz+bfYkEOFL+nS7W2HWRZSQDkFxPSbcP7KXFcCS48iqMM5dh+rXDDXgA4jt8W+ByrtEBR6Hu65ByGHryUSqz8t3JkFxHRY6fl9idwEH1b1c8xIeVFDfsEFPJ9S3mlZ12WP20v/YVD2EjPi+jelVAWYA7PKHlCPBYyOYk+XGE9nejK++yYCkn8xyH1Tis1Toa0XufqEwu/0v1fAO5E8/8HniTmFLA2VQhWsmm7vnqevszpQvA1xaiySWMmuNC6PCbhQEVkjQUqhj9fFTa++V4gUjF0iyWxXQSc3kNtMuUuMuPzJR/l7Im2Arwz8l7aYz3h0mh0KScDUtTC1U7V8IVio8gaWnCKDHspUXXvAHBjUrDgIKMF0t9LjPk45x/gGfEBbzVEEnRMxhidhYqXzf4S6OUfmZvZYdH0C02n+jcYlhIfs2GlRmatH2yLG0vSvmuvfX13jm8GOpw== 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:(13230028)(4636009)(376002)(346002)(396003)(136003)(39860400002)(451199021)(40470700004)(46966006)(36840700001)(44832011)(2906002)(186003)(6506007)(6512007)(2616005)(26005)(336012)(478600001)(47076005)(83380400001)(36860700001)(40460700003)(6486002)(86362001)(356005)(8676002)(81166007)(82740400003)(8936002)(41300700001)(40480700001)(316002)(36756003)(70586007)(5660300002)(6666004)(70206006)(82310400005)(131093003);DIR:OUT;SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 May 2023 13:34:04.9900 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 864b5773-bf2c-4c7e-be5d-08db611289a8 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: DBAEUR03FT057.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBBPR08MB6220 X-Spam-Status: No, score=-11.6 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,FORGED_SPF_HELO,GIT_PATCH_0,KAM_DMARC_NONE,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,SPF_NONE,TXREP,T_SCC_BODY_TEXT_LINE,UNPARSEABLE_RELAY autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: The 05/30/2023 11:44, Florian Weimer via Libc-alpha wrote: > diff --git a/elf/dl-lookup.c b/elf/dl-lookup.c > index 05f36a2507..a8f48fed12 100644 > --- a/elf/dl-lookup.c > +++ b/elf/dl-lookup.c > @@ -366,8 +366,25 @@ do_lookup_x (const char *undef_name, unsigned int new_hash, > if ((type_class & ELF_RTYPE_CLASS_COPY) && map->l_type == lt_executable) > continue; > > - /* Do not look into objects which are going to be removed. */ > - if (map->l_removed) > + /* Do not look into objects which are going to be removed, > + except when the referencing object itself is being removed. > + > + The second part covers the situation when an object lazily > + binds to another object while running its destructor, but the > + destructor of the other object has already run, so that > + dlclose has set l_removed. It may not always be obvious how > + to avoid such a scenario to programmers creating DSOs, > + particularly if C++ vague linkage is involved and triggers > + symbol interposition. > + > + Accepting these to-be-removed objects makes the lazy and > + BIND_NOW cases more similar. (With BIND_NOW, the symbol is > + resolved early, before the destructor call, so the issue does > + not arise.). Behavior matches the constructor scenario: the > + implementation allows binding to symbols of objects whose > + constructors have not run. In fact, not doing this would be > + mostly incompatible with symbol interposition. */ > + if (map->l_removed && !(undef_map != NULL && undef_map->l_removed)) > continue; btw is there a valid use-case that goes wrong if the check is dropped completely? (keep binding to map when map->l_removed)