Date: Tuesday, January 31, 2012 @ 08:38:55 Author: stephane Revision: 148408
upgpkg: python2 2.7.2-5 Fix upstream issue #13156: revert changeset f6feed6ec3f9, which was only relevant for native TLS implementations, and fails with the ad-hoc TLS implementation when a thread doesn't have an auto thread state (e.g. a thread created outside of Python calling into a subinterpreter). Added: python2/trunk/13156-revert-tls-changeset-subinterpreter.patch Modified: python2/trunk/PKGBUILD python2/trunk/gdbm-magic-values.patch -------------------------------------------------+ 13156-revert-tls-changeset-subinterpreter.patch | 61 ++++++++++++++++++++++ PKGBUILD | 11 ++- gdbm-magic-values.patch | 1 3 files changed, 69 insertions(+), 4 deletions(-) Added: 13156-revert-tls-changeset-subinterpreter.patch =================================================================== --- 13156-revert-tls-changeset-subinterpreter.patch (rev 0) +++ 13156-revert-tls-changeset-subinterpreter.patch 2012-01-31 13:38:55 UTC (rev 148408) @@ -0,0 +1,61 @@ + +# HG changeset patch +# User Charles-François Natali <[email protected]> +# Date 1318446474 -7200 +# Node ID ee4fe16d9b4822457ad855ea6c44e65030166304 +# Parent f6feed6ec3f9b024cecd0fd587595c403f55624f +Issue #13156: revert changeset f6feed6ec3f9, which was only relevant for native +TLS implementations, and fails with the ad-hoc TLS implementation when a thread +doesn't have an auto thread state (e.g. a thread created outside of Python +calling into a subinterpreter). + +diff --git a/Include/pystate.h b/Include/pystate.h +--- a/Include/pystate.h ++++ b/Include/pystate.h +@@ -111,7 +111,6 @@ PyAPI_FUNC(void) PyThreadState_Clear(PyT + PyAPI_FUNC(void) PyThreadState_Delete(PyThreadState *); + #ifdef WITH_THREAD + PyAPI_FUNC(void) PyThreadState_DeleteCurrent(void); +-PyAPI_FUNC(void) _PyGILState_Reinit(void); + #endif + + PyAPI_FUNC(PyThreadState *) PyThreadState_Get(void); +diff --git a/Modules/signalmodule.c b/Modules/signalmodule.c +--- a/Modules/signalmodule.c ++++ b/Modules/signalmodule.c +@@ -976,7 +976,6 @@ void + PyOS_AfterFork(void) + { + #ifdef WITH_THREAD +- _PyGILState_Reinit(); + PyEval_ReInitThreads(); + main_thread = PyThread_get_thread_ident(); + main_pid = getpid(); +diff --git a/Python/pystate.c b/Python/pystate.c +--- a/Python/pystate.c ++++ b/Python/pystate.c +@@ -537,23 +537,6 @@ void + autoInterpreterState = NULL; + } + +-/* Reset the TLS key - called by PyOS_AfterFork. +- * This should not be necessary, but some - buggy - pthread implementations +- * don't flush TLS on fork, see issue #10517. +- */ +-void +-_PyGILState_Reinit(void) +-{ +- PyThreadState *tstate = PyGILState_GetThisThreadState(); +- PyThread_delete_key(autoTLSkey); +- if ((autoTLSkey = PyThread_create_key()) == -1) +- Py_FatalError("Could not allocate TLS entry"); +- +- /* re-associate the current thread state with the new key */ +- if (PyThread_set_key_value(autoTLSkey, (void *)tstate) < 0) +- Py_FatalError("Couldn't create autoTLSkey mapping"); +-} +- + /* When a thread state is created for a thread by some mechanism other than + PyGILState_Ensure, it's important that the GILState machinery knows about + it so it doesn't try to create another thread state for the thread (this is + Modified: PKGBUILD =================================================================== --- PKGBUILD 2012-01-31 13:31:47 UTC (rev 148407) +++ PKGBUILD 2012-01-31 13:38:55 UTC (rev 148408) @@ -5,7 +5,7 @@ pkgname=python2 pkgver=2.7.2 -pkgrel=4 +pkgrel=5 _pybasever=2.7 pkgdesc="A high-level scripting language" arch=('i686' 'x86_64') @@ -18,10 +18,12 @@ options=('!makeflags') source=(http://www.python.org/ftp/python/${pkgver%rc?}/Python-${pkgver}.tar.xz linux2.patch - gdbm-magic-values.patch) + gdbm-magic-values.patch + 13156-revert-tls-changeset-subinterpreter.patch) sha1sums=('56700044141402dc35e7a0a24aa7ffda1a8c1a53' '937c06190899a491d662c7918658313e7640070e' - '0f4cd9508c9ace620a829a688a9285e0480b5fb5') + 'ede2c991b1a91eec5a01cc2d3a11231f17d750ae' + 'd61fa2b8efd1d08a2ee8a9aed434dc94b8297d6b') build() { cd "${srcdir}/Python-${pkgver}" @@ -44,6 +46,9 @@ # http://bugs.python.org/issue13007 patch -Np1 -i ../gdbm-magic-values.patch + # http://bugs.python.org/issue13156 + patch -Np1 -i ../13156-revert-tls-changeset-subinterpreter.patch + # Ensure that we are using the system copy of various libraries (expat, zlib and libffi), # rather than copies shipped in the tarball rm -r Modules/expat Modified: gdbm-magic-values.patch =================================================================== --- gdbm-magic-values.patch 2012-01-31 13:31:47 UTC (rev 148407) +++ gdbm-magic-values.patch 2012-01-31 13:38:55 UTC (rev 148408) @@ -10,4 +10,3 @@ return "gdbm" # Check for old Berkeley db hash file format v2 -diff -up Python-2.7.2/Misc/NEWS.gdbm-1.9-magic Python-2.7.2/Misc/NEWS
