From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05on2052.outbound.protection.outlook.com [40.107.20.52]) by sourceware.org (Postfix) with ESMTPS id 08A00385840F for ; Wed, 2 Feb 2022 14:41:55 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 08A00385840F Received: from DU2PR04CA0276.eurprd04.prod.outlook.com (2603:10a6:10:28c::11) by AM0PR08MB3282.eurprd08.prod.outlook.com (2603:10a6:208:5c::15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4930.21; Wed, 2 Feb 2022 14:41:49 +0000 Received: from DB5EUR03FT010.eop-EUR03.prod.protection.outlook.com (2603:10a6:10:28c:cafe::c0) by DU2PR04CA0276.outlook.office365.com (2603:10a6:10:28c::11) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4951.12 via Frontend Transport; Wed, 2 Feb 2022 14:41:49 +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; Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by DB5EUR03FT010.mail.protection.outlook.com (10.152.20.96) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4951.12 via Frontend Transport; Wed, 2 Feb 2022 14:41:49 +0000 Received: ("Tessian outbound 31aeb3346a45:v113"); Wed, 02 Feb 2022 14:41:49 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: 13ba3b33a96fcdb8 X-CR-MTA-TID: 64aa7808 Received: from 64cc53e956c5.1 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 3627CFCE-0F06-4DB2-9A4F-A051A1371B5E.1; Wed, 02 Feb 2022 14:41:42 +0000 Received: from EUR04-VI1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 64cc53e956c5.1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Wed, 02 Feb 2022 14:41:42 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=MnHNo3X08euvx7t3JSgxPHUA/6C/qWh5752DbB9YovbCNbTBmpanfcF+8goFF4/mn+WQt2UfJeg4BvQedZovp31Egwr7zMOI5uK9M7C2C0dzAWPnIUdk2/QKDMT/N2iZcM0Vn9Z+GI9gaKRmqm0MPusUsW2GPb3OSgtTxyjuGd3QteheHUygkfSnAGFquy9wqKDS869xqQIWb4KinEVl5sEsQcrJi4xgiyzAKCjRKJEDfTlYkOluITigHoqE3eDuteOpMmywK7TOrPubmyeMDst1G77kdvRjNUFenabXjID/i7uZKWdUzjMJJBSWA2yXVWV79sPWt/NTLDnZbz+V5w== 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=MoCD+b/ADKLk6B2g/BoCVVTIIK9qvdLCQFRDOTZr4PU=; b=MuFLfNGuj8X0m0F5Dk49qkknElzY7c7VaQY4bvEeF6UPqHHCHEMFIM9EtUaKfYVPX2y+jB+gRcUgiDjZR0lWjtq+0YRrDRulygP5msGvWTN9BrFxb2tjDM5At6yom+909vaNB+EYcdsGyTob1Q4u0Plmi4j3I3SD47q4NxAjBsGVmaK6lbyk76bGMMvahTKrEp8k+4YjbcLnOZzfTd26MbRxAAGF8Vmu9hxrf14CRm89SWs6Jfx4Fxy1lNpK9fCaDshDPdHGyBbUyoRp+KKVgUfTbrDYG5pIPBRqpCzwGhYnC+5055hiJHcmCExUmUW5VCH2qdBSTgMeAzbWnKG2sQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none 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 AM9PR08MB6691.eurprd08.prod.outlook.com (2603:10a6:20b:303::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4951.12; Wed, 2 Feb 2022 14:41:39 +0000 Received: from DB9PR08MB7179.eurprd08.prod.outlook.com ([fe80::dca:9146:2814:3f63]) by DB9PR08MB7179.eurprd08.prod.outlook.com ([fe80::dca:9146:2814:3f63%7]) with mapi id 15.20.4951.012; Wed, 2 Feb 2022 14:41:38 +0000 Date: Wed, 2 Feb 2022 14:41:33 +0000 From: Szabolcs Nagy To: Andreas Schwab Cc: Szabolcs Nagy via Libc-alpha Subject: Re: [PATCH v4] elf: Avoid deadlock between pthread_create and ctors [BZ #28357] Message-ID: <20220202144133.GL1989194@arm.com> References: <20211001163326.3423517-1-szabolcs.nagy@arm.com> <87wnidjq5k.fsf@igel.home> Content-Type: text/plain; charset=utf-8 Content-Disposition: inline In-Reply-To: <87wnidjq5k.fsf@igel.home> X-ClientProxiedBy: SA0PR12CA0001.namprd12.prod.outlook.com (2603:10b6:806:6f::6) To DB9PR08MB7179.eurprd08.prod.outlook.com (2603:10a6:10:2cc::19) MIME-Version: 1.0 X-MS-Office365-Filtering-Correlation-Id: f69e795a-62a9-4720-cbec-08d9e65a250b X-MS-TrafficTypeDiagnostic: AM9PR08MB6691:EE_|DB5EUR03FT010:EE_|AM0PR08MB3282:EE_ X-Microsoft-Antispam-PRVS: x-checkrecipientrouted: true NoDisclaimer: true X-MS-Oob-TLC-OOBClassifiers: OLM:8882;OLM:8882; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: J3MBbhkr4fwILCEOiXwZybdtX43mE4KMAJ4Ycgyc1Za9cd/wcsKf7vwTc0JHayvfppVg3adsL+ghPUmCRBPOimEnLPQRC2jiQc2wu/ot/wFUtrNvVxtVDBy8Vl3gY4hmna6K3qe0FwNJWDyfx+jOp5fo6mGwQMD3YQ5500gfrDGhzehOVOv8UOVdVCg9WMJvwKhu31v9lUuZFSUZyF8TCqMj9USRUaZTyCEmYoNAeUITJjBbqC6L5jfamoW4/n+dM6b1UafMQ50Jnla/r9WCw9oM+OnxrQGNAAtYozGjZLXVTbmikz6U6Xwai2N2+P9V9s9sPtLeJ6tilCzco0mjEm6SNhZ2g2PSyMWA3mlOfmn9ZdqLXMKrS/yK9hoKqmoIv4BsiUH4oq9y+pgt/QT21JnHJ6ykzLTlpZeFChsLVCNxrqumM4mbgq7T9KH4jXEgE0j+Sbtm9weDQMAkuoFTevaI8IC6DwfwrCy9VS+sXytjxdjBCMzZlkCqYJr/LaxXFQJXXTm66ehK370OxixkxlPO98gckzegEU3CFL0Hripbp8Ac+a0xM2f44TARZTgv/PghXDjxbSiWKbeW7IjkSgw/3FiMC6mFs2/FT/rT83ub0poeVrktmztI2TI96EXJEhXrNddU5pm1gb4E026vGfcPVCL9CJZRdr5d/CWYhV77g51XRxxBW/p3mkXgz0DhfqJNPVqn9mn2ayzGkZYrtQ== 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:(13230001)(4636009)(366004)(83380400001)(8676002)(1076003)(186003)(26005)(4326008)(38100700002)(5660300002)(8936002)(38350700002)(66476007)(66946007)(316002)(6916009)(66556008)(36756003)(2616005)(6512007)(33656002)(44832011)(508600001)(52116002)(2906002)(86362001)(6506007)(6486002)(6666004); DIR:OUT; SFP:1101; X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR08MB6691 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: DB5EUR03FT010.eop-EUR03.prod.protection.outlook.com X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id-Prvs: 06b48f0f-3cab-4ba6-7683-08d9e65a1eb8 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Y8/dUER6Ohi0pIDYvPQk2uT2k0/G3fHnEBnhoDyHPn67Yh4q+NyyLhGZ22m2rhBhpGOYKIKll9SPxaaMyDykGdN16fgahrqOAKo5Aco/XrmnAJR61dzI1Ajy267XA1wo3SsWsA4Xki3pyvaTnEm5MXJYJsmxNxjS2VQ03jTS4NiWH6I6dyEzABzteIfvFNuWuCNbDx6Wskax/0qfcfwy0mWhbvz2RxxcoM0ojnpOdKEEoPmRo4dAzan9L5I9r45mlONOHYz6kg/vYFYkZsGZG0K99gBf1OUG3lwwnnOKJjRL7MyIg7XKpgPud6gDa7bJtD7n9o3LL4u2RqUtaAV7HfMF3foWVUHMucOpLOlnN0dyabPFTVd1kTdXP5tFYDL+7QJELFkN+beSTj/5kEzRS/iVQnoiQTnYIS3/61IHSQjcb5NpwDT0q3yBc7h/fJ4W44YA6eOqkagsbhUe0/orZGb3gMo5lmV4PQUMLN2cjqmJjeCoAUseTQTiX44819N+Zzj4nBmJzLmWL2EfwTR+gSN7lIWSfaaslL43gml2o0YGw1b/3jPQb1yeQeUvZk+Fg6pkFhX7XniICddrDNvsxYCZ9SjRPdcQkobN8xQ4GuOMtuFJ0etMBB+VvnuAadppRDsUI2H+IF39fY0kzzv6cVu165UT/0z5t5A9fJ2LjRa48QSIpeuK/Af5rnybF3kg 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:(13230001)(4636009)(40470700004)(36840700001)(46966006)(336012)(26005)(186003)(356005)(2616005)(6486002)(1076003)(81166007)(83380400001)(33656002)(36756003)(508600001)(40460700003)(86362001)(2906002)(47076005)(6512007)(36860700001)(44832011)(8936002)(8676002)(70206006)(6862004)(70586007)(4326008)(6666004)(5660300002)(316002)(6506007)(82310400004); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 02 Feb 2022 14:41:49.2454 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: f69e795a-62a9-4720-cbec-08d9e65a250b 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: DB5EUR03FT010.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM0PR08MB3282 X-Spam-Status: No, score=-12.9 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE, UNPARSEABLE_RELAY autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) 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: Wed, 02 Feb 2022 14:41:57 -0000 The 02/02/2022 15:31, Andreas Schwab wrote: > On Okt 01 2021, Szabolcs Nagy via Libc-alpha wrote: > > > diff --git a/elf/dl-open.c b/elf/dl-open.c > > index 5295e931b0..6ea5dd2457 100644 > > --- a/elf/dl-open.c > > +++ b/elf/dl-open.c > > @@ -66,6 +66,9 @@ struct dl_open_args > > libc_map value in the namespace in case of a dlopen failure. */ > > bool libc_already_loaded; > > > > + /* Set to true if the end of dl_open_worker_begin was reached. */ > > + bool worker_continue; > > + > > /* Original parameters to the program and the current environment. */ > > int argc; > > char **argv; > > @@ -482,7 +485,7 @@ call_dl_init (void *closure) > > } > > > > static void > > -dl_open_worker (void *a) > > +dl_open_worker_begin (void *a) > > { > > struct dl_open_args *args = a; > > const char *file = args->file; > > @@ -774,6 +777,36 @@ dl_open_worker (void *a) > > _dl_call_libc_early_init (libc_map, false); > > } > > > > + args->worker_continue = true; > > +} > > + > > +static void > > +dl_open_worker (void *a) > > +{ > > + struct dl_open_args *args = a; > > + > > + args->worker_continue = false; > > + > > + { > > + /* Protects global and module specific TLS state. */ > > + __rtld_lock_lock_recursive (GL(dl_load_tls_lock)); > > + > > + struct dl_exception ex; > > + int err = _dl_catch_exception (&ex, dl_open_worker_begin, args); > > + > > + __rtld_lock_unlock_recursive (GL(dl_load_tls_lock)); > > + > > + if (__glibc_unlikely (ex.errstring != NULL)) > > + /* Reraise the error. */ > > + _dl_signal_exception (err, &ex, NULL); > > + } > > + > > + if (!args->worker_continue) > > + return; > > Why do you need worker_continue? How can worker_continue not be set at > this point? because dl_open_worker_begin (old dl_open_worker) can simply return. (without reaching the end of the function or raising an error)