diff --git a/0001-Resolves-rhbz-855541-XIOError-handler-multithread-wo.patch b/0001-Resolves-rhbz-855541-XIOError-handler-multithread-wo.patch new file mode 100644 index 0000000..fdf22d6 --- /dev/null +++ b/0001-Resolves-rhbz-855541-XIOError-handler-multithread-wo.patch @@ -0,0 +1,74 @@ +From b0759366fc6cdda2db2f2cb4208df36c1b1fe8fc Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= +Date: Wed, 12 Sep 2012 13:44:09 +0100 +Subject: [PATCH] Resolves: rhbz#855541 XIOError handler multithread woes + +We have two threads using X, on an XIOError both +threads call their XIOError handlers and two +calls to exit trample all over eachother. + +Change-Id: I20defc6f84cc6ea2372a0d6c979e8078fe920a88 +--- + vcl/unx/generic/app/saldata.cxx | 6 ++++++ + vcl/unx/gtk/app/gtkdata.cxx | 14 ++++++++++++++ + 2 files changed, 20 insertions(+) + +diff --git a/vcl/unx/generic/app/saldata.cxx b/vcl/unx/generic/app/saldata.cxx +index 1fb6a7a..0596dce 100644 +--- a/vcl/unx/generic/app/saldata.cxx ++++ b/vcl/unx/generic/app/saldata.cxx +@@ -322,6 +322,12 @@ int X11SalData::XErrorHdl( Display *pDisplay, XErrorEvent *pEvent ) + + int X11SalData::XIOErrorHdl( Display * ) + { ++ if (::osl::Thread::getCurrentIdentifier() != Application::GetMainThreadIdentifier()) ++ { ++ pthread_exit(NULL); ++ return 0; ++ } ++ + /* #106197# hack: until a real shutdown procedure exists + * _exit ASAP + */ +diff --git a/vcl/unx/gtk/app/gtkdata.cxx b/vcl/unx/gtk/app/gtkdata.cxx +index 8f3151c..867883f 100644 +--- a/vcl/unx/gtk/app/gtkdata.cxx ++++ b/vcl/unx/gtk/app/gtkdata.cxx +@@ -526,6 +526,18 @@ GtkData::GtkData( SalInstance *pInstance ) + m_aDispatchCondition = osl_createCondition(); + } + ++XIOErrorHandler aOrigXIOErrorHandler = NULL; ++ ++int XIOErrorHdl(Display *pDisplay) ++{ ++ if (::osl::Thread::getCurrentIdentifier() != Application::GetMainThreadIdentifier()) ++ { ++ pthread_exit(NULL); ++ return 0; ++ } ++ return aOrigXIOErrorHandler ? aOrigXIOErrorHandler(pDisplay) : 0; ++} ++ + GtkData::~GtkData() + { + Yield( true, true ); +@@ -545,6 +557,7 @@ GtkData::~GtkData() + osl_destroyCondition( m_aDispatchCondition ); + osl_releaseMutex( m_aDispatchMutex ); + osl_destroyMutex( m_aDispatchMutex ); ++ XSetIOErrorHandler(aOrigXIOErrorHandler); + } + + void GtkData::Dispose() +@@ -664,6 +677,7 @@ void GtkData::Init() + // init gtk/gdk + gtk_init_check( &nParams, &pCmdLineAry ); + gdk_error_trap_push(); ++ aOrigXIOErrorHandler = XSetIOErrorHandler(XIOErrorHdl); + + for (i = 0; i < nParams; i++ ) + g_free( pCmdLineAry[i] ); +-- +1.7.11.4 + diff --git a/libreoffice.spec b/libreoffice.spec index ee45c25..6a9adf6 100644 --- a/libreoffice.spec +++ b/libreoffice.spec @@ -34,7 +34,7 @@ Summary: Free Software Productivity Suite Name: libreoffice Epoch: 1 Version: %{libo_version}.1 -Release: 1%{?libo_prerelease}%{?dist} +Release: 2%{?libo_prerelease}%{?dist} License: (MPLv1.1 or LGPLv3+) and LGPLv3 and LGPLv2+ and BSD and (MPLv1.1 or GPLv2 or LGPLv2 or Netscape) and Public Domain and ASL 2.0 and Artistic Group: Applications/Productivity URL: http://www.documentfoundation.org/develop @@ -171,6 +171,7 @@ Patch10: 0001-Resolves-rhbz-836937-insanely-slow-with-Zemberek-ins.patch Patch11: 0001-Resolves-rhbz-846775-Clipboard-must-be-disposed-befo.patch Patch13: 0001-Resolves-rhbz-842292-crash-in-calling-callback-whose.patch Patch14: 0001-Resolves-rhbz-855972-crash-on-switching-to-outline-v.patch +Patch15: 0001-Resolves-rhbz-855541-XIOError-handler-multithread-wo.patch %{!?python_sitearch: %global python_sitearch %(%{__python} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib(1))")} %define instdir %{_libdir} @@ -781,6 +782,7 @@ mv -f redhat.soc extras/source/palettes/standard.soc %patch11 -p1 -b .rhbz-846775-Clipboard-must-be-disposed-befo.patch %patch13 -p1 -b .rhbz-842292-crash-in-calling-callback-whose.patch %patch14 -p1 -b .rhbz-855972-crash-on-switching-to-outline-v.patch +%patch15 -p1 -b .rhbz-855541-XIOError-handler-multithread-wo.patch # TODO: check this # these are horribly incomplete--empty translations and copied english @@ -2011,6 +2013,9 @@ update-desktop-database %{_datadir}/applications &> /dev/null || : %endif %changelog +* Wed Sep 12 2012 Caolán McNamara - 1:3.6.2.1-2 +- Resolves: rhbz#855541 XIOError handler multithread woes + * Wed Sep 12 2012 David Tardon - 1:3.6.2.1-1 - 3.6.2 rc1