python3/UnpackedTarball_python3.mk | 1 + python3/python-3.3.0-pythreadstate.patch.1 | 15 +++++++++++++++ pyuno/source/loader/pyuno_loader.cxx | 4 ++++ 3 files changed, 20 insertions(+)
New commits: commit e83990a87281f2472f398be9267f7b11f7f8463e Author: Michael Stahl <mst...@redhat.com> Date: Thu Apr 18 12:23:22 2013 +0200 python3: disable check in PyThreadState_Swap This check is triggered by nested pyuno PyThreadAttach instances. The assertion is basically about having multiple PyThreadState instances per OS thread. Hopefully this is not a "real" problem and the other checks in PyEval_ReleaseThread/PyEval_AcquireThread will find all "real" problems. http://www.mail-archive.com/libreoffice@lists.freedesktop.org/msg62195.html Change-Id: Ia82135f37f55ea69b545a83098619939869cb7c5 Reviewed-on: https://gerrit.libreoffice.org/3453 Reviewed-by: David Ostrovsky <david.ostrov...@gmx.de> Tested-by: David Ostrovsky <david.ostrov...@gmx.de> diff --git a/python3/UnpackedTarball_python3.mk b/python3/UnpackedTarball_python3.mk index 87adff0..696c869 100644 --- a/python3/UnpackedTarball_python3.mk +++ b/python3/UnpackedTarball_python3.mk @@ -31,6 +31,7 @@ $(eval $(call gb_UnpackedTarball_add_patches,python3,\ python3/python-3.3.0-implicit-int.patch.1 \ python3/python-3.3.0-ffi-clang.patch.1 \ python3/python-3.3.0-gcc-4.8.patch.1 \ + python3/python-3.3.0-pythreadstate.patch.1 \ )) ifneq ($(OS),WNT) diff --git a/python3/python-3.3.0-pythreadstate.patch.1 b/python3/python-3.3.0-pythreadstate.patch.1 new file mode 100644 index 0000000..66350e2 --- /dev/null +++ b/python3/python-3.3.0-pythreadstate.patch.1 @@ -0,0 +1,15 @@ +disable a check in PyThreadState_Swap that is hopefully not a "real" problem + +--- python3/Python/pystate.c 2013-04-17 22:45:00.799800000 +0200 ++++ python3/Python/pystate.c 2013-04-17 22:46:53.743800000 +0200 +@@ -437,7 +437,9 @@ + to be used for a thread. Check this the best we can in debug + builds. + */ +-#if defined(Py_DEBUG) && defined(WITH_THREAD) ++#if defined(Py_DEBUG) && defined(WITH_THREAD) && 0 ++ /* disable this for LO - it is triggered by nested PyThreadAttach ++ which do not appear to be a real problem */ + if (newts) { + /* This can be called from PyEval_RestoreThread(). Similar + to it, we need to ensure errno doesn't change. commit 1fb53a637597f76bea86514b62ddfad34f60c889 Author: Michael Stahl <mst...@redhat.com> Date: Thu Apr 18 12:38:42 2013 +0200 pyuno_loader::CreateInstance: delete the initial PyThreadState Don't see how it could be used again, it appears to be leaked and causes the assertion in PyThreadState_Swap to fire. Change-Id: Id6bbb4363928e4fdd8bda1905f6e1f9931dba74c Reviewed-on: https://gerrit.libreoffice.org/3452 Reviewed-by: David Ostrovsky <david.ostrov...@gmx.de> Tested-by: David Ostrovsky <david.ostrov...@gmx.de> diff --git a/pyuno/source/loader/pyuno_loader.cxx b/pyuno/source/loader/pyuno_loader.cxx index 0db1b9b..718edc7 100644 --- a/pyuno/source/loader/pyuno_loader.cxx +++ b/pyuno/source/loader/pyuno_loader.cxx @@ -223,6 +223,10 @@ Reference< XInterface > CreateInstance( const Reference< XComponentContext > & c PyThreadState *tstate = PyThreadState_Get(); PyEval_ReleaseThread( tstate ); + // This tstate is never used again, so delete it here. + // This prevents an assertion in PyThreadState_Swap on the + // PyThreadAttach below. + PyThreadState_Delete(tstate); } PyThreadAttach attach( PyInterpreterState_Head() ); _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits