From patchwork Mon Jul 7 12:10:58 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Dora, Sunil Kumar" X-Patchwork-Id: 115754 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 20E4C3857B8F for ; Mon, 7 Jul 2025 12:18:26 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 20E4C3857B8F X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from mx0a-0064b401.pphosted.com (mx0a-0064b401.pphosted.com [205.220.166.238]) by sourceware.org (Postfix) with ESMTPS id F24C83858D32 for ; Mon, 7 Jul 2025 12:11:45 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org F24C83858D32 Authentication-Results: sourceware.org; dmarc=pass (p=reject dis=none) header.from=windriver.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=windriver.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org F24C83858D32 Authentication-Results: server2.sourceware.org; arc=pass smtp.remote-ip=205.220.166.238 ARC-Seal: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1751890306; cv=pass; b=WTael2TMB+bPSd3cS0SYxs0Pbveuymx5L+P974hd9ABxy7IjyvPPDZbxbn4bFQhasYzvUqCnraRiVZjJUqS40/vH3wBcR+JxXhc6/Sj8RY+m8k9KKChaiXdK9HQIX0ZlKEWgOKkOyaE/0yzIZ7BOSCk5QnvvNvEYC7e5IUOri80= ARC-Message-Signature: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1751890306; c=relaxed/simple; bh=QhPBpGvnKYv0OHZnu/iGJF7A2fon4ejCZqNcjKLv7Us=; h=From:To:Subject:Date:Message-ID:MIME-Version; b=nxTp+ob6niK90JlYw88zM2K5qK1pzkekIlC1VKFjNGcO3nrNc89dNO3if6PCpsSuI61p0kaCgPvtxtaUva3OVvopd/vwzbIMyRkKKC6T2AAS/E+nBGybSkYoM/VbyIFnL6GRdcV0u7Lm3wQPCi5b96PFm5fygLr9vd3aojDfyoI= ARC-Authentication-Results: i=2; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org F24C83858D32 Received: from pps.filterd (m0250810.ppops.net [127.0.0.1]) by mx0a-0064b401.pphosted.com (8.18.1.2/8.18.1.2) with ESMTP id 567Ag64b018969; Mon, 7 Jul 2025 05:11:37 -0700 Received: from nam04-dm6-obe.outbound.protection.outlook.com (mail-dm6nam04on2068.outbound.protection.outlook.com [40.107.102.68]) by mx0a-0064b401.pphosted.com (PPS) with ESMTPS id 47pyb5hh59-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT); Mon, 07 Jul 2025 05:11:37 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=WVhojWavl0mPys7GHWxFH8QRtNYaJd+oPufYMSJZ8Ka7m1BcVoWiezn9kgrMbIyq5lTRIbejs3H9hxnzctrnhoLVh9RwoNKiPj9RPRC0llGMKxEjv+1fFd2CEhhrizQ+h7vRakzVT/cQaxGIBLddQjbFjdrDDKoXMOJHjMnpp+iTs4pBhv+QOeTSAZQVGCL2yhwx1pcpuYOyYZWgu0/0E7z5W5mCjHiF5cfizyx6bS48YtJfTT5BDis32xcBLcHiH2emkj2JryvRm5k0GFtgRUTrfYxaN/SqT01BzZ84bItLcj7CFFOcTXhbH4gDPCT2kQmUYiEJL2xOCQTMLSedNA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; 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=i240pzJSV1M0QvuqoGIkjsi1TXtDP/Id/xvzukf4vMM=; b=QHthrJGDZ44k2qKLFiDOVVlPgpfvXR5wL+U473I8oNYq3EuDZUn0w8S+4FbsI6Fh8z/IxSBEP+51NDSbSWWvPOE9RSaouA7Rn3tKS8dUJ/plw1y07hBtXTtUxnco/sXpqCZEXinERLR5I17spdVAeWJSR7GwDhXCD02ykRVqd3mxm70WkToob4t1x6LZ3qZ33YQIrn6zoMrV7YMF+inW9FPpTx9lJ9I42yJi5xQEUU9QKZCdeAT7XOOMDbu+sR/ehbFjboN10VpjawwhPtFJmCNVeCFYx1ytdCO4kDBHqG4yUdXALyuVDnyiC5OyyR1+wrkoJ0HlJdJYgxisv9Gb8w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=windriver.com; dmarc=pass action=none header.from=windriver.com; dkim=pass header.d=windriver.com; arc=none Received: from DS0PR11MB7901.namprd11.prod.outlook.com (2603:10b6:8:f4::20) by PH0PR11MB5126.namprd11.prod.outlook.com (2603:10b6:510:3a::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8901.24; Mon, 7 Jul 2025 12:11:34 +0000 Received: from DS0PR11MB7901.namprd11.prod.outlook.com ([fe80::9fa:eb3f:cf26:264d]) by DS0PR11MB7901.namprd11.prod.outlook.com ([fe80::9fa:eb3f:cf26:264d%4]) with mapi id 15.20.8901.023; Mon, 7 Jul 2025 12:11:34 +0000 From: sunilkumar.dora@windriver.com To: libc-alpha@sourceware.org Cc: carlos@redhat.com, SunilKumar.Dora@windriver.com, Sundeep.Kokkonda@windriver.com, fweimer@redhat.com, frankbarrus_sw@shaggy.cc, malteskarupke@fastmail.fm Subject: [PATCH 03/10] [2.37] nptl: Remove unnecessary catch-all-wake in condvar group switch Date: Mon, 7 Jul 2025 05:10:58 -0700 Message-ID: <20250707121105.2226766-4-sunilkumar.dora@windriver.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250707121105.2226766-1-sunilkumar.dora@windriver.com> References: <20250707121105.2226766-1-sunilkumar.dora@windriver.com> X-ClientProxiedBy: TYAPR01CA0135.jpnprd01.prod.outlook.com (2603:1096:404:2d::27) To DS0PR11MB7901.namprd11.prod.outlook.com (2603:10b6:8:f4::20) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: DS0PR11MB7901:EE_|PH0PR11MB5126:EE_ X-MS-Office365-Filtering-Correlation-Id: 2670c9e0-c79e-4838-ef02-08ddbd4f6a9f X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|1800799024|366016|52116014|376014|38350700014; X-Microsoft-Antispam-Message-Info: VcqPNUkNXQDVr0z2N9twZLosweV9O+R/i8zHSZppoS/WaG2Tvdy7NlMKtEceX9YFARlg0XZcFxlaUk746nrhrviis4xvbWunqqJQWVlIzPPwh1oOYFlS5rLEpbv1evUGWKlW4F9lJ+tjKCRPT1ExFGP6ilFY6Rw+fYywcujhf4Syw7BMvwk2OGhVNutIUv1HePqG8SgxrQTdCT/3tizgcrH27Yfet4S4H6Ttbh7FXGFbqS39OnU8wdmIKUkBEsU4UVLBBOeO5rQJRpRPKydge1NYNrbfJKU/kNf6ZZRe3Cm92Jm4bI6LhrqvumzxTT/HZeD6uX1e+jLpp+mN9y4YxmlwWHD2ruWnzTe4pfYQY0EL2ogGMXkVQJ5N5cSZ38CTsyKSy3HQ7A2PovRlEqiZobXX8Fmj04JoOPg9gMM/2LXhb9qb1A7QHXWJSOTHE4SZhtUsqaHaKsBJFsXGRWdYOLlDNCqcka5ZW3O0JP0YzifPu9sIhMSfaVO+K9r67JOtyLmKEpwmY0T92Igm39FwPFGwXKYQUHnxKA4416+1DAaYDi3IXO5YUBQHeq+FzOwmwGeY9iAeIFY8QBOCRjxIW473oxJR4Dq4vupFdOpjDEt4gmlxH1nJD2ceL3skzNRZrooP+h4sdLzSVtj9EO9RkEeymy22Ph/K7E1wK2V7FmgWeRx7kkVC2LgaSIb4F6yXxUTC+Hku9ug1NRtYmGtbCO3e2QYAKUJgnsokRkaLxfmp9dDYER4BqYu2zyVA1zuqg7hZwROohc3OVhnr7OX1RXkmBnz5JmoRkKO1Bke8pA3Ocm82ziGmtdDN+6xQXnxnSgVRcJ3wyy9UA2ZQUJck3H8cpWwCd29EQ/YanSz+faFhg2dVLV2zBk+eYPcks2tGyRcL333mZlaMgpPoE5abk5ez9ueQ0UiNvtshWTAaybH7X5MnmcdzlxmceLdx0ZCuUNq4s1oeGujAgu7WWeU46EJw7eZenwMiYOnaItBYIRbwQp36NAS89CRUT1MD7rvT4sPmlXtgts/f6mmfBIqqwvNQbVy0TD3p06itk7TqCxTQSYfoUDlHMFrN8RUrVAtpMgXn68dFpF+7Ida60bMl5nIF7C67/kMlZw/wDdGhIb4cGP5JZwz6UE4NduLCRACQePO+iWTjifQEyt40uzGjkX5raOHcsZFDRxxQ7xwxLu5CHELhavw7h0Y+M2gDTJa/IVEw5Djud2QsuVAEKNaZHuWNRmD7eqZCWXHqZyiZ/RCzAq1Gtsf6e540PHdTsoKiTk7vGLxEUG5W6zN8mV5CYAqOr4Zu/eR4mp8r9ayEJCpC3+gn4VilSmio2ie8ORHzvsxry2rZVL8nWbBgHVsMm/MXX5kJskwkGeRmdiNHHhsq9Mi9WryB+9KlWsWmuXQ35Q2cRu0vbGr3GFfmwNQcqF6R6YkcFqcwRvZgSroXATOtlSkw2kT2xb888cNgGFRq2LdmbSBpqYtK1mTgxqlT0Q== X-Forefront-Antispam-Report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DS0PR11MB7901.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(1800799024)(366016)(52116014)(376014)(38350700014); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: BSlxGgBEV6UDd0Qv0mkde2peGmDzohl9B2PVD3Gem+mmCH92xI9BUhjImup5MAQOoXrcO4jnNngNos0jNLKNdrCLPmUdMuSifQ5HROw8P+Q1K++rh/b2rYHIUPEBt+f6xe3BuyC97nUGkmaL+iF8n2ZsFxbswNSqJ8hfTaYwsFkcFl+mf7yv9a2qNTC7KTfY6F8vdE/cft6rtGSF/CPOH49ghaM3qLToL6I6JDaI3CaqNE/1sORJ2MGaIE4/WkkyE6oeq8cSz4VLKXkTaCsCm02EWvamuUWJVkKOoNjU3LG/MzEgu0n+21yHE+qytziYh+A1FsMPdavRv+ZvZiE70X5TMIjyKC4PcwxhFzdG2GD9qR1RuZH6Raob02lmk22vlIAvipta+dxIA+GvLbGyNTM70VJcmShLCOMdqJXyXEnzYbVy4ibk52NM66778GfzKl6O8m289jNCto4Afn3AGO7ww0GbCi3BorPRgMd1px6AlZkU4SZeSYM4MbkymrRuPR9S6Rlh8b7uDwge475+6QHOF654pT1pObhMHamv6vrq/EMnbTULQ9jyxkUiz1c0PoreEz2OicGxGj+Vc7XpqqFSSlZsCoKJUWHZPZASv7jb3vLoRybMs4X3aVrdn7fpbcoHekEuvN1SAY/+C+obewJ6D1QAQ4uVb428qBZLCHzzydnUEmZTbJW7SDnU2NgoddrJoVvdtj7MuAp7ZhlA+UrODBPL/P9EfdJmI5hXwuKODqOqTcY4cfTtWJBknhaHPTgT6CEu+t4H7KNSj36io6H9i/gUuPLClhBTiiPVauLu5uED6Jd81nHtwo834JsHlianbBIWxk75XTiCEAw7B4CyKrdrBDdbQVw5mjk4550fT1gC9yXDZyXJH1z8EmoEgLzx1l8MF5lj6LXMvA8J//AabN6cTCpTkTMvgtYTtYpMNdQc4RCPzYSZIeuOo92raJXUa4enADiEEaz0nzxHYjoST295NqLC9zXGHyzYtImcYeN1tP5+bPSc7UFBXPFBYmIaJ2M3ID1gCdhylj4RVf7wAl7428+tJ7KGMg+kE4KqVWOd58mrOCFzbL0Jvca9ziKYk2Fb0tCVG+6X40sFyDdQ6t+TjV7s3/1BjojSIe0xAZhbETFDj48oQIbveu44dGYkGM09jiLPFg6ZK4QzIuheGzkrKlXYcflGEHwt75kg6OQ+IzRRtuaUDVyDsZ2cJM9s+H5jqLBS1VRlEopCtdk3gE2DoB7p0+WrDkG6K4OiTK+FBILgiLNBX6TBuGNMHi/uAQUGHRXXewj/tjJsq3Yo0BGHbBewPxdvfNqwdIz4dvukCi52e39LvOPgKw5zaoUWPTUI7jQJlRcBm0UuS3R3VOa3qyIVsngu12LEBxwh2KtoSKAwPivaq/Ugz4rLPiGync0/ZiknQxdkj2N5FlckGWjsfuYCP6qi8b6liNOGmVionHRkCrnBFFMjhI292+HUkwnynj9FXb12xQ3D7WUykP3M3unzIx2cRY+aj/HkVGG6b6FxSVYaiDLGBH6lBO4IkRmoQFskeHX0aKsinr49uSUTGYTq0xaMMdyU7lA3b84btRKjFUNzRAnYTaqJFNLgJ18eiV7Lw597baME+w== X-OriginatorOrg: windriver.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2670c9e0-c79e-4838-ef02-08ddbd4f6a9f X-MS-Exchange-CrossTenant-AuthSource: DS0PR11MB7901.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 07 Jul 2025 12:11:34.7647 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 8ddb2873-a1ad-4a18-ae4e-4644631433be X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: yaujN4MlzPwcVyqJa5nOexYTSirk7UC2yzZk9eIdvhsF5n6ogXP+AWw2y45L5bFL0LHjbLjBMqPCUfwmRkHef+HsO10e3yjv4W4KfqWl80Q= X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR11MB5126 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNzA3MDA3MSBTYWx0ZWRfX5Q9709EZu4og HNPQRdlEL8CU1hKSaHlc6Uv3QiwTf1ISI5k9t+nbIM0ll1Wv5XoLfLbSrAJ+TvGGrqfmmz/3r6J Y+nbzfHfN5FKwRkKRH7/6nX5K3u2gB1OtssLCYbH1w+yTc9D68zPv1pgeTSTmnEOWHH8YWBXTBJ lct85hm7Vtg5SKnXJSxmin8eswEnYMJh9f/hWAKhwj4D99kJYM2hrmWgtVpjnI0e/YHiCsqjPa+ fMbG1lwMtEdchtTF84Lmu1fTceVKarpQFmia3S3VHlX3VWxtApKSU/Svf3/ise+mHEyn/7dii2N rCJukPSs2o/n+WUEEAXuWAdHazXF+NK25jhyiDDOgYGKvAM3KmghC/zyOgMPL+bPhwHw3xgelGw Y33bCAloMtt7PuP5CWqRFT3hMAmHY+uiSpb1eJTx2uYAqjL7Hoa50FEqZb5oAbHKTJN4mPUx X-Authority-Analysis: v=2.4 cv=V5590fni c=1 sm=1 tr=0 ts=686bb979 cx=c_pps a=YqjARhBgC/QJlLYaippFdQ==:117 a=6eWqkTHjU83fiwn7nKZWdM+Sl24=:19 a=lCpzRmAYbLLaTzLvsPZ7Mbvzbb8=:19 a=wKuvFiaSGQ0qltdbU6+NXLB8nM8=:19 a=Ol13hO9ccFRV9qXi2t6ftBPywas=:19 a=xqWC_Br6kY4A:10 a=Wb1JkmetP80A:10 a=t7CeM3EgAAAA:8 a=93FKfIyiHXBki5GTU3EA:9 a=0bXxn9q0MV6snEgNplNhOjQmxlI=:19 a=FdTzh2GWekK77mhwV6Dw:22 X-Proofpoint-ORIG-GUID: k_N30vPbK-b8y_1fD9ViL0-9tOtxlwRL X-Proofpoint-GUID: k_N30vPbK-b8y_1fD9ViL0-9tOtxlwRL X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.1.7,FMLib:17.12.80.40 definitions=2025-07-07_03,2025-07-07_01,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 phishscore=0 mlxscore=0 spamscore=0 priorityscore=1501 clxscore=1011 suspectscore=0 adultscore=0 bulkscore=0 malwarescore=0 impostorscore=0 mlxlogscore=805 lowpriorityscore=0 classifier=spam authscore=0 authtc=n/a authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.21.0-2505280000 definitions=main-2507070071 X-Spam-Status: No, score=-12.2 required=5.0 tests=BAYES_00, GIT_PATCH_0, KAM_DMARC_STATUS, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H2, RCVD_IN_VALIDITY_RPBL_BLOCKED, RCVD_IN_VALIDITY_SAFE_BLOCKED, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libc-alpha-bounces~patchwork=sourceware.org@sourceware.org From: Malte Skarupke [BZ #25847] This wake is unnecessary. We only switch groups after every sleeper in a group has been woken. Sure, they may take a while to actually wake up and may still hold a reference, but waking them a second time doesn't speed that up. Instead this just makes the code more complicated and may hide problems. In particular this safety wake wouldn't even have helped with the bug that was fixed by Barrus' patch: The bug there was that pthread_cond_signal would not switch g1 when it should, so we wouldn't even have entered this code path. Signed-off-by: Sunil Dora (cherry picked from commit b42cc6af11062c260c7dfa91f1c89891366fed3e) --- nptl/pthread_cond_common.c | 31 +------------------------------ 1 file changed, 1 insertion(+), 30 deletions(-) diff --git a/nptl/pthread_cond_common.c b/nptl/pthread_cond_common.c index c1eeec6a93..1c43432bc5 100644 --- a/nptl/pthread_cond_common.c +++ b/nptl/pthread_cond_common.c @@ -221,13 +221,7 @@ __condvar_quiesce_and_switch_g1 (pthread_cond_t *cond, uint64_t wseq, * New waiters arriving concurrently with the group switching will all go into G2 until we atomically make the switch. Waiters existing in G2 are not affected. - * Waiters in G1 have already received a signal and been woken. If they - haven't woken yet, they will be closed out immediately by the advancing - of __g_signals to the next "lowseq" (low 31 bits of the new g1_start), - which will prevent waiters from blocking using a futex on - __g_signals since it provides enough signals for all possible - remaining waiters. As a result, they can each consume a signal - and they will eventually remove their group reference. */ + * Waiters in G1 have already received a signal and been woken. */ /* Update __g1_start, which finishes closing this group. The value we add will never be negative because old_orig_size can only be zero when we @@ -240,29 +234,6 @@ __condvar_quiesce_and_switch_g1 (pthread_cond_t *cond, uint64_t wseq, unsigned int lowseq = ((old_g1_start + old_orig_size) << 1) & ~1U; - /* If any waiters still hold group references (and thus could be blocked), - then wake them all up now and prevent any running ones from blocking. - This is effectively a catch-all for any possible current or future - bugs that can allow the group size to reach 0 before all G1 waiters - have been awakened or at least given signals to consume, or any - other case that can leave blocked (or about to block) older waiters.. */ - if ((atomic_fetch_or_release (cond->__data.__g_refs + g1, 0) >> 1) > 0) - { - /* First advance signals to the end of the group (i.e. enough signals - for the entire G1 group) to ensure that waiters which have not - yet blocked in the futex will not block. - Note that in the vast majority of cases, this should never - actually be necessary, since __g_signals will have enough - signals for the remaining g_refs waiters. As an optimization, - we could check this first before proceeding, although that - could still leave the potential for futex lost wakeup bugs - if the signal count was non-zero but the futex wakeup - was somehow lost. */ - atomic_store_release (cond->__data.__g_signals + g1, lowseq); - - futex_wake (cond->__data.__g_signals + g1, INT_MAX, private); - } - /* At this point, the old G1 is now a valid new G2 (but not in use yet). No old waiter can neither grab a signal nor acquire a reference without noticing that __g1_start is larger.