cpython/Python
Thomas Wouters 448db2155f Merged revisions 74841 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk

........
  r74841 | thomas.wouters | 2009-09-16 12:55:54 -0700 (Wed, 16 Sep 2009) | 23 lines


  Fix issue #1590864, multiple threads and fork() can cause deadlocks, by
  acquiring the import lock around fork() calls. This prevents other threads
  from having that lock while the fork happens, and is the recommended way of
  dealing with such issues. There are two other locks we care about, the GIL
  and the Thread Local Storage lock. The GIL is obviously held when calling
  Python functions like os.fork(), and the TLS lock is explicitly reallocated
  instead, while also deleting now-orphaned TLS data.

  This only fixes calls to os.fork(), not extension modules or embedding
  programs calling C's fork() directly. Solving that requires a new set of API
  functions, and possibly a rewrite of the Python/thread_*.c mess. Add a
  warning explaining the problem to the documentation in the mean time.

  This also changes behaviour a little on AIX. Before, AIX (but only AIX) was
  getting the import lock reallocated, seemingly to avoid this very same
  problem. This is not the right approach, because the import lock is a
  re-entrant one, and reallocating would do the wrong thing when forking while
  holding the import lock.

  Will backport to 2.6, minus the tiny AIX behaviour change.
........
2009-09-16 20:06:36 +00:00
..
Python-ast.c Merged revisions 66801,66803-66804,66813,66854-66856,66866,66870-66872,66874,66887,66903,66905,66911,66913,66927,66932,66938,66942,66962,66964,66973-66974,66977,66992,66998-66999,67002,67005,67007,67028,67040-67041,67044,67070,67089,67091,67101,67117-67119,67123-67124 via svnmerge from 2008-11-07 08:56:27 +00:00
_warnings.c Merged revisions 74040,74042 via svnmerge from 2009-07-17 06:33:03 +00:00
asdl.c Merge in release25-maint r60793: 2008-06-11 07:41:16 +00:00
ast.c Merged revisions 67590 via svnmerge from 2008-12-05 18:01:46 +00:00
atof.c
bltinmodule.c Merged revisions 73776 via svnmerge from 2009-07-02 18:19:47 +00:00
ceval.c Merged revisions 73064-73065 via svnmerge from 2009-05-30 21:43:48 +00:00
codecs.c This reverts r63675 based on the discussion in this thread: 2008-06-09 04:58:54 +00:00
compile.c Merge in release25-maint r60793: 2008-06-11 07:41:16 +00:00
dup2.c
dynload_aix.c
dynload_atheos.c
dynload_beos.c
dynload_dl.c
dynload_hpux.c
dynload_next.c
dynload_os2.c
dynload_shlib.c
dynload_stub.c
dynload_win.c Merged revisions 69038 via svnmerge from 2009-01-27 23:30:15 +00:00
errors.c Merged revisions 71058,71149-71150,71212,71214-71216,71222,71225,71234,71237-71238,71240-71241,71243,71249,71251 via svnmerge from 2009-04-05 21:26:31 +00:00
formatter_string.c Refactor and clean up str.format() code (and helpers) in advance of optimizations. 2008-05-30 18:10:04 +00:00
formatter_unicode.c Refactor and clean up str.format() code (and helpers) in advance of optimizations. 2008-05-30 18:10:04 +00:00
frozen.c
frozenmain.c
future.c This reverts r63675 based on the discussion in this thread: 2008-06-09 04:58:54 +00:00
getargs.c Merged revisions 71058,71149-71150,71212,71214-71216,71222,71225,71234,71237-71238,71240-71241,71243,71249,71251 via svnmerge from 2009-04-05 21:26:31 +00:00
getcompiler.c
getcopyright.c Merged revisions 68133-68134,68141-68142,68145-68146,68148-68149,68159-68162,68166,68171-68174,68179,68195-68196,68210,68214-68215,68217-68222 via svnmerge from 2009-01-03 21:55:17 +00:00
getcwd.c
getmtime.c
getopt.c Improve -X error message. 2008-04-13 20:50:29 +00:00
getplatform.c
getversion.c
graminit.c Merged revisions 68523 via svnmerge from 2009-01-11 09:28:08 +00:00
import.c Merged revisions 74841 via svnmerge from 2009-09-16 20:06:36 +00:00
importdl.c
importdl.h
mactoolboxglue.c This reverts r63675 based on the discussion in this thread: 2008-06-09 04:58:54 +00:00
marshal.c Merged revisions 72601 via svnmerge from 2009-05-13 13:13:18 +00:00
modsupport.c This reverts r63675 based on the discussion in this thread: 2008-06-09 04:58:54 +00:00
mysnprintf.c Fix issue2588: Do not execute str[size-1] = '\0' when a 0 size is 2008-05-26 22:07:28 +00:00
mystrtoul.c Revert r61969 which added casts to Py_CHARMASK to avoid compiler warnings. 2008-03-28 04:58:51 +00:00
peephole.c This reverts r63675 based on the discussion in this thread: 2008-06-09 04:58:54 +00:00
pyarena.c
pyfpe.c
pymath.c Issue #5724: Fix cmath failures on Solaris 10. 2009-05-04 13:30:43 +00:00
pystate.c Adds a sanity check to avoid a *very rare* infinite loop due to a corrupt tls 2008-08-04 07:33:37 +00:00
pystrcmp.c Remove compiler warnings (on Alpha at least) about using chars as 2008-03-23 06:19:57 +00:00
pystrtod.c Merged revisions 71976 via svnmerge from 2009-04-26 19:59:00 +00:00
pythonrun.c Merged revisions 71152 via svnmerge from 2009-04-04 14:19:56 +00:00
sigcheck.c
strdup.c
strtod.c Remove unnecessary curly braces around an int literal. 2008-02-07 08:04:07 +00:00
structmember.c This reverts r63675 based on the discussion in this thread: 2008-06-09 04:58:54 +00:00
symtable.c Merged revisions 71026 via svnmerge from 2009-04-02 02:58:49 +00:00
sysmodule.c Merged revisions 72871-72872 via svnmerge from 2009-05-23 19:35:33 +00:00
thread.c Adds a sanity check to avoid a *very rare* infinite loop due to a corrupt tls 2008-08-04 07:33:37 +00:00
thread_atheos.h
thread_beos.h
thread_cthread.h
thread_foobar.h
thread_lwp.h
thread_nt.h Fix problems in x64 build that were discovered by the testsuite: 2007-05-03 20:27:03 +00:00
thread_os2.h
thread_pth.h
thread_pthread.h
thread_sgi.h
thread_solaris.h
thread_wince.h
traceback.c Merged revisions 70463 via svnmerge from 2009-03-18 21:49:29 +00:00