[Python-checkins] closes bpo-34004: Skip lock interruption tests on musl. (GH-9224)

Miss Islington (bot) webhook-mailer at python.org
Wed Sep 12 17:10:59 EDT 2018


https://github.com/python/cpython/commit/b608fcd444c00ff37a19d34e4eeadb1221fb6436
commit: b608fcd444c00ff37a19d34e4eeadb1221fb6436
branch: 3.7
author: Miss Islington (bot) <31488909+miss-islington at users.noreply.github.com>
committer: GitHub <noreply at github.com>
date: 2018年09月12日T14:10:56-07:00
summary:
closes bpo-34004: Skip lock interruption tests on musl. (GH-9224)
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 at python.org>
files:
M Doc/library/threading.rst
M Lib/test/test_threadsignals.py
diff --git a/Doc/library/threading.rst b/Doc/library/threading.rst
index b94021b4eb8f..e6185c5b3a21 100644
--- a/Doc/library/threading.rst
+++ b/Doc/library/threading.rst
@@ -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()
diff --git a/Lib/test/test_threadsignals.py b/Lib/test/test_threadsignals.py
index 1ad6c63fea2e..7e13b1720f91 100644
--- a/Lib/test/test_threadsignals.py
+++ b/Lib/test/test_threadsignals.py
@@ -78,6 +78,10 @@ def alarm_interrupt(self, sig, frame):
 
 @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 @@ def test_lock_acquire_interruption(self):
 
 @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')


More information about the Python-checkins mailing list

AltStyle によって変換されたページ (->オリジナル) /