From 0806749e631ab4e24f78df347a9d932bbc3cb6c7 Mon Sep 17 00:00:00 2001 From: "Gregory P. Smith" Date: Tue, 30 Sep 2008 20:41:13 +0000 Subject: Works around issue3863: freebsd4/5/6 and os2emx are known to have OS bugs when calling fork() from a child thread. This disables that unit test (with a note printed to stderr) on those platforms. A caveat about buggy platforms is added to the os.fork documentation. --- Doc/library/os.rst | 4 ++++ Lib/test/test_threading.py | 6 ++++++ Misc/NEWS | 3 +++ 3 files changed, 13 insertions(+) diff --git a/Doc/library/os.rst b/Doc/library/os.rst index c223e54..14784fa 100644 --- a/Doc/library/os.rst +++ b/Doc/library/os.rst @@ -1646,6 +1646,10 @@ written in Python, such as a mail server's external command delivery program. Fork a child process. Return ``0`` in the child and the child's process id in the parent. If an error occurs :exc:`OSError` is raised. + + Note that some platforms including FreeBSD <= 6.3, Cygwin and OS/2 EMX have + known issues when using fork() from a thread. + Availability: Unix. diff --git a/Lib/test/test_threading.py b/Lib/test/test_threading.py index 4e87437..c8f9cac 100644 --- a/Lib/test/test_threading.py +++ b/Lib/test/test_threading.py @@ -380,6 +380,12 @@ class ThreadJoinOnShutdown(unittest.TestCase): import os if not hasattr(os, 'fork'): return + # Skip platforms with known problems forking from a worker thread. + # See http://bugs.python.org/issue3863. + if sys.platform in ('freebsd4', 'freebsd5', 'freebsd6', 'os2emx'): + print >>sys.stderr, ('Skipping test_3_join_in_forked_from_thread' + ' due to known OS bugs on'), sys.platform + return script = """if 1: main_thread = threading.current_thread() def worker(): diff --git a/Misc/NEWS b/Misc/NEWS index 1b08d76..6e6c58d 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -37,6 +37,9 @@ Library - Issue #3879: A regression in urllib.getproxies_enviroment was fixed. +- Issue #3863: Disabled a unit test of fork being called from a thread + when running on platforms known to exhibit OS bugs when attempting that. + Build ----- -- cgit v0.12