]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
closes bpo-34004: Skip lock interruption tests on musl. (GH-9224)
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>
Wed, 12 Sep 2018 21:11:45 +0000 (14:11 -0700)
committerGitHub <noreply@github.com>
Wed, 12 Sep 2018 21:11:45 +0000 (14:11 -0700)
Returning EINTR from pthread semaphore or lock acquisition is an optional POSIX
feature. musl does not provide this feature, so some threadsignal tests fail
when Python is built against it.

There's no good way to test for musl, so we skip if we're on Linux and not using
glibc pthreads.

Also, hedge in the threading documentation about when we can provide interrupts
from lock acquisition.
(cherry picked from commit 5b10d5111d7a855297654af9045f8907b7d3dd08)

Co-authored-by: Benjamin Peterson <benjamin@python.org>
Doc/library/threading.rst
Lib/test/test_threadsignals.py

index 26e6a35bfba2542a1d9b301c2c47c513a5952763..063d2c0663662673f05e759ccc547349856741ac 100644 (file)
@@ -400,7 +400,8 @@ All methods are executed atomically.
          The *timeout* parameter is new.
 
       .. versionchanged:: 3.2
-         Lock acquires can now be interrupted by signals on POSIX.
+         Lock acquisition can now be interrupted by signals on POSIX if the
+         underlying threading implementation supports it.
 
 
    .. method:: release()
index 99b60cd9e6b18ef567359901af7e32dbed459dba..9083e419d1d535774934462673b731f194938729 100644 (file)
@@ -78,6 +78,10 @@ class ThreadSignals(unittest.TestCase):
 
     @unittest.skipIf(USING_PTHREAD_COND,
                      'POSIX condition variables cannot be interrupted')
+    @unittest.skipIf(sys.platform.startswith('linux') and
+                     not sys.thread_info.version,
+                     'Issue 34004: musl does not allow interruption of locks '
+                     'by signals.')
     # Issue #20564: sem_timedwait() cannot be interrupted on OpenBSD
     @unittest.skipIf(sys.platform.startswith('openbsd'),
                      'lock cannot be interrupted on OpenBSD')
@@ -105,6 +109,10 @@ class ThreadSignals(unittest.TestCase):
 
     @unittest.skipIf(USING_PTHREAD_COND,
                      'POSIX condition variables cannot be interrupted')
+    @unittest.skipIf(sys.platform.startswith('linux') and
+                     not sys.thread_info.version,
+                     'Issue 34004: musl does not allow interruption of locks '
+                     'by signals.')
     # Issue #20564: sem_timedwait() cannot be interrupted on OpenBSD
     @unittest.skipIf(sys.platform.startswith('openbsd'),
                      'lock cannot be interrupted on OpenBSD')