[3.14] gh-123828: Fix data race in _interpchannels._waiting_release (GH-124107) (GH-139517)

gh-123828: Fix data race in `_interpchannels._waiting_release` (GH-124107)
(cherry picked from commit f39dea3bae)

Co-authored-by: Nadeshiko Manju <me@manjusaka.me>
This commit is contained in:
Miss Islington (bot) 2025-10-07 19:29:37 +02:00 committed by GitHub
parent 9e091dbf02
commit a69bdab541
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 2 additions and 3 deletions

View file

@ -6,7 +6,7 @@ import threading
import time
import unittest
from test.support import import_helper, skip_if_sanitizer
from test.support import import_helper
_channels = import_helper.import_module('_interpchannels')
from concurrent.interpreters import _crossinterp
@ -365,7 +365,6 @@ class ChannelIDTests(TestBase):
#self.assertIsNot(got, obj)
@skip_if_sanitizer('gh-129824: race on _waiting_release', thread=True)
class ChannelTests(TestBase):
def test_create_cid(self):

View file

@ -511,12 +511,12 @@ _waiting_release(_waiting_t *waiting, int received)
assert(!waiting->received);
waiting->status = WAITING_RELEASING;
PyThread_release_lock(waiting->mutex);
if (waiting->received != received) {
assert(received == 1);
waiting->received = received;
}
waiting->status = WAITING_RELEASED;
PyThread_release_lock(waiting->mutex);
}
static void