DKIM-Filter: OpenDKIM Filter v2.11.0 delorie.com 44UDdxxF2119060 Authentication-Results: delorie.com; dkim=pass (1024-bit key, unprotected) header.d=cygwin.com header.i=@cygwin.com header.a=rsa-sha256 header.s=default header.b=INnkiKpP X-Recipient: archive-cygwin AT delorie DOT com DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 655F3385E833 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cygwin.com; s=default; t=1717076398; bh=50wH5s9+JsDcYbIKIpI7yzVPWL6dnLT5CqrBajJDQdQ=; h=To:Subject:Date:In-Reply-To:References:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To: From; b=INnkiKpP9vYPywC+RaSBDRiQp+ewPZKx558c5/NzOWdBE92C6DWwtfVxn7KN03Dea b6DKOtczRCPLXKXMQG+SZ2/BLRphl4wIqWkgfNjVvNKqz2x9UbPq1/eMU2uV00Othm Eg6fZ7ygz+/ajekoq1XOfEdV+R7Noo3K65kZStsM= X-Original-To: cygwin AT cygwin DOT com Delivered-To: cygwin AT cygwin DOT com DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 25827385840F ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 25827385840F ARC-Seal: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1717076347; cv=pass; b=cCJNx5vzyGzcrrjXeKHaoT0Wyyl0ZQG0eAoC8RA/VHf+hSlUTf5TlygPDc4RjAt2F6jq5xTV/E9+RJqgkBWswTRsw4E9nN91Z8fNfatUCiKFtrP/wa7VjZOyUZuoPaescKMGzdpvbyjQBcLyNskysBti3yNLKWCysSIuZLT4gKc= ARC-Message-Signature: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1717076347; c=relaxed/simple; bh=GhFJsxS57XOkzTlq57DmUcZBzw2fYUBsaqnBCzIcc9Y=; h=DKIM-Signature:DKIM-Signature:From:To:Subject:Date:Message-ID: MIME-Version; b=EL7xQz2svE2BjeB90HyWSK8QtUTIWf3BIjz4h19eqFH/pH1kVwjU9c9QFM2uI4+YzIXzhBLdsx+qtpWO8MGbg/5DPWy//rR6/P6cVe/U3lQPmI2yePM4okj/DRPi7jklUIxKNQdquMiHZpIi5qHBt44fd5/ybjYgLs2s+ZQZ+I0= ARC-Authentication-Results: i=2; server2.sourceware.org ARC-Seal: i=1; a=rsa-sha256; t=1717076338; cv=none; d=strato.com; s=strato-dkim-0002; b=rhOFVcf/UuHakoHPG6D2EfhhBBsfzkPzsUdOzGPKt7hZYxsYzQiqCubIO6N9vrhf92 f99jiMfbgiM96Yts64HMZiTKyy6a3Pj0FTk1AueiHfqDhJC5LR8YzwWXH3rcyX05/EZr WNlOMGqdsLxSeW5O6U5Dq8znfRnXoiflx0gV3LeN08hiGXQtgxro0ciMfgtbaHQA1NFm 4Q7C6rxilcwj6q6X0wPqPqJ76di7pVyfGHLA/+0ZQgqugN50QJt33FRhGeBcQ2Ji81gc 51A1PUG9sfTNebBVIv9wgYAEiRK3M122VjIw3LNExS3T4QK3VEKg3lcHhLL3OZGqsVGa m1fw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; t=1717076338; s=strato-dkim-0002; d=strato.com; h=References:In-Reply-To:Message-ID:Date:Subject:To:From:Cc:Date:From: Subject:Sender; bh=k/3toVzl3aa1mgeF7YU7M7H9n3SDpts8Ki4YKlqYBIk=; b=WUTYv/VKyqnKlYViuVCQZnz3Fv4gyN4ro4uj9Y147/K9niXH3lV3CqwmhyipWfJJht Q3QsseHZ5JooeKmHOz6cb5h75xAqHtaQVDBJIAP3Yl0Mur24gUAQyjq/k5pQ/+gwGnqK WLDjenpT8JPBeaJVVG4lrgT9aENj0xefr6yf6F9yPDLf7eHlIQIIPfN+gc71WSebX/ry vpSfXfvhjZKCtry+2pwu20W+rB0oNk26i1HptybFtyxnXFFnb/Y/89PZ1Pt/eJ7dN2ln zGOJpZ540b+Hd+rdv24ySFWZvEMxeGnI07UvuoU7KHc6nMFZ8Ixbgtu2hx04J/gjQaOn u3Sg== ARC-Authentication-Results: i=1; strato.com; arc=none; dkim=none X-RZG-CLASS-ID: mo00 X-RZG-AUTH: ":Ln4Re0+Ic/6oZXR1YgKryK8brlshOcZlIWs+iCP5vnk6shH0WWb0LN8XZoH94zq68+3cfpOfjqSRCBA3DxwVMPzYVsfrcNDf" To: cygwin AT cygwin DOT com, Takashi Yano Subject: Re: [PATCH v2] Cygwin: pthread: Fix a race issue introduced by the commit 2c5433e5da82 Date: Thu, 30 May 2024 15:38:58 +0200 Message-ID: <5687998.SimZDucyVS@nimes> In-Reply-To: <20240530205918.7c730117b567bb3bec3a0c3f@nifty.ne.jp> References: <20240530050538 DOT 53724-1-takashi DOT yano AT nifty DOT ne DOT jp> <20240530205012 DOT 2aff4d507acac144e50df2a4 AT nifty DOT ne DOT jp> <20240530205918 DOT 7c730117b567bb3bec3a0c3f AT nifty DOT ne DOT jp> MIME-Version: 1.0 X-Spam-Status: No, score=-3.7 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, KAM_NUMSUBJECT, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, SPF_HELO_PASS, SPF_NONE, TXREP, T_SCC_BODY_TEXT_LINE 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: cygwin AT cygwin DOT com X-Mailman-Version: 2.1.30 Precedence: list List-Id: General Cygwin discussions and problem reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , From: Bruno Haible via Cygwin Reply-To: Bruno Haible Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: cygwin-bounces+archive-cygwin=delorie DOT com AT cygwin DOT com Sender: "Cygwin" Takashi Yano wrote in cygwin-patches: > With v3 patch: > int > pthread::once (pthread_once_t *once_control, void (*init_routine) (void)) > { > /* Sign bit of once_control->state is used as done flag */ > if (once_control->state & INT_MIN) > return 0; > > /* The type of &once_control->state is int *, which is compatible with > LONG * (the type of the first argument of InterlockedIncrement()). */ > InterlockedIncrement (&once_control->state); > pthread_mutex_lock (&once_control->mutex); > if (!(once_control->state & INT_MIN)) > { > init_routine (); > InterlockedOr (&once_control->state, INT_MIN); > } > pthread_mutex_unlock (&once_control->mutex); > if (InterlockedDecrement (&once_control->state) == INT_MIN) > pthread_mutex_destroy (&once_control->mutex); > return 0; > } Looks good to me. If it passes 10 or 100 runs of my test program from , I would say, it's good. Thanks! Bruno -- Problem reports: https://cygwin.com/problems.html FAQ: https://cygwin.com/faq/ Documentation: https://cygwin.com/docs.html Unsubscribe info: https://cygwin.com/ml/#unsubscribe-simple