This bugs origin is a crash when using KDE4 native file picker dialogs from within LibreOffice [1].
There are several similar ones in all distributions.
In the backtrace you can see, that LO calls the Qt event dispatcher, which processes a draw event, which - at some point - waits for the clipboard using the Qt / LO event loop, which processes another (now nested) draw event -> crash.
This happens, because LO sets
qApp->clipboard()->setProperty( "useEventLoopWhenWaiting", true );
because the X11 event processing in clipboardWaitForEvents would interfere with the LO X11 handling / locking.
QX11Data::clipboardWaitForEvents (gui/kernel/qclipboard_x11.cpp:520) actually installs the correct clipboard event filter in the qapp, which should just handle Clipboard events.
But actually the Qt internal glib event loop doesn't honor the QEventLoop::ExcludeSocketNotifiers (see src/corelib/kernel/qeventdispatcher_glib.cpp).
Originally I opened [2], because I didn't want to deep dive into the Qt codebase. Since I didn't get any usable replies and all my implemented workarounds in LibreOffice didn't work I tried to understand the backtrace from [2] and realized the missing QEventLoop::ExcludeSocketNotifiers handling in the Qt glib code. I opened [3] and pushed a patch for Qt review as [4].
Distribution: Kubuntu 12.04
Package: qt4-x11 4:4.8.1-0ubuntu4.6
Program: LibreOffice 4.3 (current master build).
This bugs origin is a crash when using KDE4 native file picker dialogs from within LibreOffice [1].
There are several similar ones in all distributions.
In the backtrace you can see, that LO calls the Qt event dispatcher, which processes a draw event, which - at some point - waits for the clipboard using the Qt / LO event loop, which processes another (now nested) draw event -> crash.
This happens, because LO sets >clipboard( )->setProperty( "useEventLoopWh enWaiting" , true ); rEvents would interfere with the LO X11 handling / locking.
qApp-
because the X11 event processing in clipboardWaitFo
QX11Data: :clipboardWaitF orEvents (gui/kernel/ qclipboard_ x11.cpp: 520) actually installs the correct clipboard event filter in the qapp, which should just handle Clipboard events.
But actually the Qt internal glib event loop doesn't honor the QEventLoop: :ExcludeSocketN otifiers (see src/corelib/ kernel/ qeventdispatche r_glib. cpp).
Originally I opened [2], because I didn't want to deep dive into the Qt codebase. Since I didn't get any usable replies and all my implemented workarounds in LibreOffice didn't work I tried to understand the backtrace from [2] and realized the missing QEventLoop: :ExcludeSocketN otifiers handling in the Qt glib code. I opened [3] and pushed a patch for Qt review as [4].
[1] https:/ /bugs.freedeskt op.org/ show_bug. cgi?id= 69002 /bugreports. qt-project. org/browse/ QTBUG-34614 /bugreports. qt-project. org/browse/ QTBUG-37380 /codereview. qt-project. org/#change, 80528
[2] https:/
[3] https:/
[4] https:/