From patchwork Tue Jul 22 14:58:15 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: 116785 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 49213384F01C for ; Tue, 22 Jul 2025 15:03:41 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 49213384F01C 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 986273858C51 for ; Tue, 22 Jul 2025 14:58:45 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 986273858C51 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 986273858C51 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=1753196325; cv=pass; b=jjBwSJEheoCp7aaMXuOUbCY81IG/OS8u84+NOI/1WQU75YZEHI8Pa7oF5yfFGcnMEShMl8b3F8R/8BKA/sVT8Y2wbIKC4RH/aVP302JHdDJ0sYdGvJPF58/l+5E+8QKkj5uKgTM81uWVWTaM8pwmJwHms8btuvLENiQzpw/GP88= ARC-Message-Signature: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1753196325; c=relaxed/simple; bh=h5/Zw3Ro8FS6LKIiG2T2rHx9RKx4m8XbaLou0aRoF+I=; h=From:To:Subject:Date:Message-ID:MIME-Version; b=UWQ48/UCoqIPSPeySisP60TjmtDCuFIzwDV24g/C7cARL3wTxGE8rlnLS75NzbpyjaZEYLooGizpVAiTZBZkB4f/h0lh0Iez8B7w5mBQJTYRflZweU2T/GmDC62lkhnRMtq3NHB7Ugj7OQIWuFn1qUDEbmA4/O0+b+7wYEQ+KD4= ARC-Authentication-Results: i=2; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 986273858C51 Received: from pps.filterd (m0250810.ppops.net [127.0.0.1]) by mx0a-0064b401.pphosted.com (8.18.1.8/8.18.1.8) with ESMTP id 56MBxodL4141957; Tue, 22 Jul 2025 07:58:42 -0700 Received: from nam04-bn8-obe.outbound.protection.outlook.com (mail-bn8nam04on2067.outbound.protection.outlook.com [40.107.100.67]) by mx0a-0064b401.pphosted.com (PPS) with ESMTPS id 481vqv0wrw-1 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Tue, 22 Jul 2025 07:58:42 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=lrUYUZcJLN9cnYVzCxEiFWqDrtgeiILlqEkJg8aFpBgp4ymxjApxIraKgN5kM24gAvcrhLakohOdN2v3kihG3WCDQGb5kMblBTPKvIc7XtGwdX+CWx2Jf0rjaIS4SknIVjIgtxyqXmoimk19sqwSWQRbpF4WigkfrhUE3oYfcIkgk4p+FP2Qo03XXSBA+hYzi30IEjgA56lY41ot5y5m7DCED6WrO2qKXXc9m6dm6Wx8GdrX7Oe7tfAxXK5wmAOqu5/CUvxdkjZjmKeXXOighwbbjvv9qLiX2c39AwNwiGqihTwTmh+Cii8BaZM1TznIN/+6+SuQW2jsMO4EK8MQ0Q== 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=nBJkBt3peNwBvwm//2wOfSzQ7esDXhcdAYLP/eIoNXY=; b=y+ZaMgccz9AMApvqGF8Qbqm1NFJUF1dTF3x8b7atDzaUdc9LyV2Bicm+1j4dRYXQvbGPCTgq3EkoFqON5tFZdFHMK0Dc8GhCN1w9eL2cGBNigFSfiossud0g6X0BOIP1AKJcIOuZ2f0Mush03RGlXMv6ZYRIFuek5ql9Ebfv278OJpulYwlBz2l10fGHgGzIpX3hrzN7lYWgQd91QTPadLBIYD1qH9XLY/whowGQD3I66tlX43Rzm/LWFwJ3UpbOp0mrmz0h1lAYghI77kjebK5R2NeVe8S38biwAuz82CBTv/j0xHJbIqFU985Bhjrlym4t9TCDCQqddE34j3YDGQ== 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 DM3PPF4AE904FD9.namprd11.prod.outlook.com (2603:10b6:f:fc00::f1d) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8943.30; Tue, 22 Jul 2025 14:58:38 +0000 Received: from DS0PR11MB7901.namprd11.prod.outlook.com ([fe80::9fa:eb3f:cf26:264d]) by DS0PR11MB7901.namprd11.prod.outlook.com ([fe80::9fa:eb3f:cf26:264d%3]) with mapi id 15.20.8943.029; Tue, 22 Jul 2025 14:58:38 +0000 From: sunilkumar.dora@windriver.com To: libc-alpha@sourceware.org Cc: sunilkumar.dora@windriver.com, carlos@redhat.com, fweimer@redhat.com, Sundeep.Kokkonda@windriver.com Subject: [PATCH 04/10] [2.36] nptl: Remove unnecessary quadruple check in pthread_cond_wait Date: Tue, 22 Jul 2025 07:58:15 -0700 Message-ID: <20250722145821.2214847-5-sunilkumar.dora@windriver.com> X-Mailer: git-send-email 2.49.0 In-Reply-To: <20250722145821.2214847-1-sunilkumar.dora@windriver.com> References: <20250722145821.2214847-1-sunilkumar.dora@windriver.com> X-ClientProxiedBy: SJ0PR13CA0232.namprd13.prod.outlook.com (2603:10b6:a03:2c1::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_|DM3PPF4AE904FD9:EE_ X-MS-Office365-Filtering-Correlation-Id: f2fff380-7bbf-4baa-9eda-08ddc9303d3b X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0; ARA:13230040|366016|1800799024|376014|52116014|38350700014; X-Microsoft-Antispam-Message-Info: 9KQGr5VWXeK2YY7KixcDbIlm97BXKm5X4cc0mA0LdumQe3LWesvQA5HNcAluhec5q6kmNIz/0CZKkn5phtPlUuGrTQdp9FLOB6xzlgVX5PAPIPkBPuhIwB/2r4dxe4tpU1Z+MbtDZYeRkvKZiwPEz3Gvj+U8o71qOJF0W1CkH+0MKspzRsut4L9WjATHDq/XSsuFNPqXCsBamCy3kkXIG63EQ7a1Sap6C1ZWCMZz9EEkDphczJf3wrkO6/SGAJRcnST6YdAWXaln7aASha4HeykDlvgn6GM1Wd5gaTjBX7zAV+p6bSiXe7+40k8FYUYc7dhawl6IavCsSZiCSu3mD/BgHWXXFFU5sW35a7TUm1lXSFaquxeihRzA8pvNfi/sit/zxVM5Cyp7GSyV8gJ9C7J4XL0hNTs3fz3KxvCRjL3ysG0vcqUt/wIIul55knxZP2QRlcA9wst2d85BAyRZLy3mUJHBvPTtsc/yAOyfh+e2u9Ygsuvk02sRflR01pAJuw3GRNg0D5KsG+9Cun4cQP7YcSCU4L64xOBKnQtuiv/xqzkVmQxtoIRM/rQa+3qU0RZZ9te2FGJQC3QZXWtsSysKj5jg0gjBHm8JqfAAsJ/ZOYZIYmnYPuHOtu6ViPl8WqQHGppFY6Xa9DZjajA8VUS2lYUbgcvhtGGGsZxHwyGc0O/fajq8LkI9XkXnnmQchIssV/COhy1CEkK4Uk8bUI7q0dXASLsH5mHJH1A6awAVS2yS2/LZ/vL8k6JmcvE+KSqIUKdagKo6FcBCOlzS1WYb3ZA/BIVuh/JZBH/5+C94bWsd1L/l+b/8rrr0O8t8FEkCy2QoribU0Jd5ED5ArOK70QSPZFpXbe7EHZxr73u6GOjxIOKEgfCMcbYaxBj4j5dcbPyCRe7wKz+tf3xzh/5zOnnXbfLZJT5DfHPQTlHudNvzj6On7hwYu1G5S9yrPY5MuIFJabVXkyIeuV5+ZHtvs4L7Tvs3hx846ESeSzsXIxCGaYDEiUN+A7bDOhWgDfBoJoKVSQbYT61j7kfc+Id/IAJWbSS1dRKKJv9d1Uy6Ug61XslMaxCS632PNveAtWbL4mFrS5SFp1FyHWh3vkT2HVq33oDb4D9G/ZywDL9stMuUUnkk2BzwwYlb/rPp0V0aF+JBNqJj5xIyzUnd4JopFmmZyzqCc3+JYoU41aub3CjbZH4fNqMuVQEFZCGyPkzhn+xZyVh7IaXTy6gk8El7X8QYh9XhdGhy60CMtONgcT9cbHmUMKvHgpv60EAWupF21IbBGqaj16T+Hcwsu0MVUtCa/bAavSDMbw2FZ3Da6rTi/iH+ClGStKnk4sgsjxrmpNneqdLKDwmsj3G/ftwS2x857IUQw9mAoXkRS6FNNjIdy5QZIryZF1A0AcEqsFSnkBJRqY32jriwagpDMUmxh70kVFx3B8aPMA6JNd5mQACHWagqZEmH1MKtSnvZ4InJKjDRJo1nB2HEzrDnKQ== 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)(366016)(1800799024)(376014)(52116014)(38350700014); DIR:OUT; SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 56MGDparzE/kFwUg3WNNavsrCbKszIdeAFdpb6VyOmB8MaCqAo58fIf8seMgusfICI0+qX0b/CYqArzksZBRdwDf1A3xKZIx0jcUTDepF6PGOOq5MvKR3QsHT3xoc9LJdvFSFPcGwGrjq5+GzmJeYr+hKCgvVHHQ/2lFSp6N6HEfWmTMRWnFxR99WmW3xsr50HerdHDkx8t36qSl+LLvmwmnZ60j5fmlvsaASihBs2/Nmi3qHcByftfHyf4mbsHoR6M5xO+C5c9LY/Tz9/cvyrciwa9HPzgmz2+8E0IcohDN+mjJlO+hUzBmZDRaf9A3W1dDxlGRoTmEIdfAm3stkgO+BVmhUItnWtRz9Nwd84WgXhH83mfJenycx/b0RVrVfthTjJvVtp+h9XYB7qNpRuKvSppxENJpqsDBYui9FL2fuD418uxSVUS8dynmEbCJlMiXPxLKz2kBs5lkW/XgnpKjH2mDtRcymn7+RQRTzlaxBdCJMOAeeg04GqC0RFC+vw5KGvcarj2Y9uCkjgz0EEfuXdh0QLXusyQaNvUjBs992l+Z6x6pm3KRymZpbl1xNg2rbnwIzestTsjWHabnHBsq6fZ0U55dPnCiFPnXA10cyhXue0bYgVGAcSbLrTYpqircfh7lOGw86tzE+FFNs1oNex8SRLt/trbdaM+8NgH5PcjqCDcNK2P7CjQcLBTBBDHE+c9XjxEb6wmNskpnyxgOBNnnajYz54Uv0/hKct6+wBhmbPLNTcknoRgAWzQ+3P7rD5ZaYA86jI1xYDxkmVpXuAhSgnMCDbLR4aFLX6AHSyWU++vO7vNMtrLh2uEGhuPqD5V7e5xR7n63zPzRlGtg1HFhSu9E39Mdge6mEaDG3nGn5UBaH49TgKlqxHgVWwnQmP00zZvh0hG9bqthe80f4me3t5Wi7Hxr1WVpGXo8f0KiOWaJz7Chnd5Kj7KC3ddryjYc2ncEa4bL2WLI3dsMsIs6Sq7y9na268fomUqNYoNNS/aXXU9jq/EV/dCG/GlJn8mz4Oa066GGmvQXeR/mf57Qhrdi1A+74b2kjQzVPwSwr4Uopmd/e9L04mGs6iTQYeZbVl5RnCfaoreUjvMDeOgPjHvAP8yEUBRFg2RTRN8EL0mkG++7nuSALAPid9gI9iqYRo61wR+ekWC4bkxce9wcBjLO5n3dbkbh2k8sBGpIkAAEBM1qQJlj1iwSzbH0gKOpoElyN+qTDVhR5TqbhxPmWhCVa5OuKmojXRWNZXo/lZwLd8Mt3I9XVD/JfJsPaPDKUetPmEoPBo+qhFyiNQcfgX2Rt7Z/Z2bZb5QALX+KHlSHZxIWB1FZAVZXMv7pd6LXRs3Iv4B9zm646PhmfN5j5Ewx3U24jatD34UD33c2ZksjH66rH2f45KrAa4SedJy2qP6eryc8qanWUc8Nm2SuKTm64/vypoqLRhWnUgtXl8um4r2FLtZgPqwcHSwVJzX01/E50ULldxEd1Lof04IV6K4Hqp002/WLpC5TSjDdyfj0qKkz2qXkgHwgWwXjtyikr+utVOdkINJ+3flx5SqD1cQFZc8cvrRsJ6QhzXyqHzanls/GXzATpvTs7OyLX2c2uFHHCfo207XaXQ== X-OriginatorOrg: windriver.com X-MS-Exchange-CrossTenant-Network-Message-Id: f2fff380-7bbf-4baa-9eda-08ddc9303d3b X-MS-Exchange-CrossTenant-AuthSource: DS0PR11MB7901.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Jul 2025 14:58:38.0764 (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: hNLOknLVSgrigNa0MJzUWf+VgWxs+i83RGJa+fLYdplyKO/pSEFfn2jR5DpDx68+6pGtMHyoGnzqafxW+sH6CjghTiqcjHjuHVzRzHFkFgQ= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM3PPF4AE904FD9 X-Proofpoint-ORIG-GUID: Nz-vq3rlKTg1UCJeMe_9z4STrM87u9wB X-Authority-Analysis: v=2.4 cv=coubk04i c=1 sm=1 tr=0 ts=687fa722 cx=c_pps a=1Lp4faRsmQVBxcp4yw9jAw==: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=A8Pz68axzIWmibrE1SYA:9 a=FdTzh2GWekK77mhwV6Dw:22 X-Proofpoint-GUID: Nz-vq3rlKTg1UCJeMe_9z4STrM87u9wB X-Proofpoint-Spam-Details-Enc: AW1haW4tMjUwNzIyMDEyNCBTYWx0ZWRfX+3V7wDGpif9V Ts6PVKsExNqF2bC6SpmjFOZQADrTw7kD/PjWAm5AEnxILSkgPo95Ac526xBo6vxcJ0fKwIh9ew6 vHEdjl2XeJsPpEDSQPifIxjmhYyZD0BYkn1A+5Efy6Ax+kd83FxzSWfHfI4ICQzinQs9ZgG3R87 b+rgPdxvOPUJPpQHQBfim/KPBHXyzEO+n6dh8zCKJEb316fjwFLU7CPqcUMbi7fYhUhGQD1ePoX PArNIs4sk3Y3QlyL/AvTSxWIT9SC66k4n9gwBrFhrLbDkMSW6lhbJm0DsU4SB3Bw4PLA1x44XZm mCY4sXSm/G3kCr/qvhQofhdCAAjBT/aYrbdU8CNSguLWuHnI/t/IJVxkzqxNLo1P0BXnr2ywAiY wm+D28Yr X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1099,Hydra:6.1.9,FMLib:17.12.80.40 definitions=2025-07-22_02,2025-07-21_02,2025-03-28_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 malwarescore=0 impostorscore=0 suspectscore=0 clxscore=1015 phishscore=0 adultscore=0 spamscore=0 bulkscore=0 priorityscore=1501 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2507210000 definitions=main-2507210183 X-Spam-Status: No, score=-13.5 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] pthread_cond_wait was checking whether it was in a closed group no less than four times. Checking once is enough. Here are the four checks: 1. While spin-waiting. This was dead code: maxspin is set to 0 and has been for years. 2. Before deciding to go to sleep, and before incrementing grefs: I kept this 3. After incrementing grefs. There is no reason to think that the group would close while we do an atomic increment. Obviously it could close at any point, but that doesn't mean we have to recheck after every step. This check was equally good as check 2, except it has to do more work. 4. When we find ourselves in a group that has a signal. We only get here after we check that we're not in a closed group. There is no need to check again. The check would only have helped in cases where the compare_exchange in the next line would also have failed. Relying on the compare_exchange is fine. Removing the duplicate checks clarifies the code. (cherry picked from commit 4f7b051f8ee3feff1b53b27a906f245afaa9cee1) Signed-off-by: Sunil Dora --- nptl/pthread_cond_wait.c | 49 ---------------------------------------- 1 file changed, 49 deletions(-) diff --git a/nptl/pthread_cond_wait.c b/nptl/pthread_cond_wait.c index cee1968756..47e834cade 100644 --- a/nptl/pthread_cond_wait.c +++ b/nptl/pthread_cond_wait.c @@ -366,7 +366,6 @@ static __always_inline int __pthread_cond_wait_common (pthread_cond_t *cond, pthread_mutex_t *mutex, clockid_t clockid, const struct __timespec64 *abstime) { - const int maxspin = 0; int err; int result = 0; @@ -425,33 +424,6 @@ __pthread_cond_wait_common (pthread_cond_t *cond, pthread_mutex_t *mutex, uint64_t g1_start = __condvar_load_g1_start_relaxed (cond); unsigned int lowseq = (g1_start & 1) == g ? signals : g1_start & ~1U; - /* Spin-wait first. - Note that spinning first without checking whether a timeout - passed might lead to what looks like a spurious wake-up even - though we should return ETIMEDOUT (e.g., if the caller provides - an absolute timeout that is clearly in the past). However, - (1) spurious wake-ups are allowed, (2) it seems unlikely that a - user will (ab)use pthread_cond_wait as a check for whether a - point in time is in the past, and (3) spinning first without - having to compare against the current time seems to be the right - choice from a performance perspective for most use cases. */ - unsigned int spin = maxspin; - while (spin > 0 && ((int)(signals - lowseq) < 2)) - { - /* Check that we are not spinning on a group that's already - closed. */ - if (seq < (g1_start >> 1)) - break; - - /* TODO Back off. */ - - /* Reload signals. See above for MO. */ - signals = atomic_load_acquire (cond->__data.__g_signals + g); - g1_start = __condvar_load_g1_start_relaxed (cond); - lowseq = (g1_start & 1) == g ? signals : g1_start & ~1U; - spin--; - } - if (seq < (g1_start >> 1)) { /* If the group is closed already, @@ -482,24 +454,6 @@ __pthread_cond_wait_common (pthread_cond_t *cond, pthread_mutex_t *mutex, an atomic read-modify-write operation and thus extend the release sequence. */ atomic_fetch_add_acquire (cond->__data.__g_refs + g, 2); - signals = atomic_load_acquire (cond->__data.__g_signals + g); - g1_start = __condvar_load_g1_start_relaxed (cond); - lowseq = (g1_start & 1) == g ? signals : g1_start & ~1U; - - if (seq < (g1_start >> 1)) - { - /* group is closed already, so don't block */ - __condvar_dec_grefs (cond, g, private); - goto done; - } - - if ((int)(signals - lowseq) >= 2) - { - /* a signal showed up or G1/G2 switched after we grabbed the - refcount */ - __condvar_dec_grefs (cond, g, private); - break; - } // Now block. struct _pthread_cleanup_buffer buffer; @@ -533,9 +487,6 @@ __pthread_cond_wait_common (pthread_cond_t *cond, pthread_mutex_t *mutex, /* Reload signals. See above for MO. */ signals = atomic_load_acquire (cond->__data.__g_signals + g); } - - if (seq < (__condvar_load_g1_start_relaxed (cond) >> 1)) - goto done; } /* Try to grab a signal. See above for MO. (if we do another loop iteration we need to see the correct value of g1_start) */