Created attachment 88514 [details] Extension source and binary (CrashTest.oxt) I'm on Ubuntu saucy (13.10) using a git 4.2 build. HEAD is 634837d9226375292242ee093099563f2a546e9a. I'm trying to run the WollMux extension (www.wollmux.org) with the LO KDE4 backend. Every save / open dialog called from the Java extension freezes LO using the Qxygen engine. Changing the theming engine won't freeze LO, but doesn't bring up a dialog either. If you set "export OOO_FORCE_DESKTOP=gnome" to use the Gnome LO backend, the dialogs work fine. I've build and attached a minimalistic extension showing the error. When using the Oxygen KDE4 backend I get lot of QThread errors: QObject: Cannot create children for a parent that is in a different thread. (Parent is Oxygen::WidgetStateEngine(0x708140), parent's thread is QThread(0x630000), current thread is QThread(0x30edf00) QObject: Cannot create children for a parent that is in a different thread. (Parent is Oxygen::MenuEngineV1(0x709460), parent's thread is QThread(0x630000), current thread is QThread(0x30edf00) QObject::installEventFilter(): Cannot filter events for objects in a different thread. QObject: Cannot create children for a parent that is in a different thread. (Parent is Oxygen::WidgetStateEngine(0x708140), parent's thread is QThread(0x630000), current thread is QThread(0x30edf00) QObject: Cannot create children for a parent that is in a different thread. (Parent is Oxygen::MenuEngineV1(0x709460), parent's thread is QThread(0x630000), current thread is QThread(0x30edf00) QObject::installEventFilter(): Cannot filter events for objects in a different thread. QObject: Cannot create children for a parent that is in a different thread. (Parent is Oxygen::WidgetStateEngine(0x708140), parent's thread is QThread(0x630000), current thread is QThread(0x30edf00) QObject: Cannot create children for a parent that is in a different thread. (Parent is Oxygen::MenuEngineV1(0x709460), parent's thread is QThread(0x630000), current thread is QThread(0x30edf00) QObject::installEventFilter(): Cannot filter events for objects in a different thread. QObject: Cannot create children for a parent that is in a different thread. (Parent is Oxygen::WidgetStateEngine(0x708140), parent's thread is QThread(0x630000), current thread is QThread(0x30edf00) QObject: Cannot create children for a parent that is in a different thread. (Parent is Oxygen::MenuEngineV1(0x709460), parent's thread is QThread(0x630000), current thread is QThread(0x30edf00) QObject::installEventFilter(): Cannot filter events for objects in a different thread. QObject: Cannot create children for a parent that is in a different thread. (Parent is Oxygen::WidgetStateEngine(0x708140), parent's thread is QThread(0x630000), current thread is QThread(0x30edf00) QObject: Cannot create children for a parent that is in a different thread. (Parent is Oxygen::MenuEngineV1(0x709460), parent's thread is QThread(0x630000), current thread is QThread(0x30edf00) QObject::installEventFilter(): Cannot filter events for objects in a different thread. Changing the theming engine tp plastique changes the errors to: QSocketNotifier: Can only be used with threads started with QThread QSocketNotifier: Can only be used with threads started with QThread [New Thread 0x2aaae27cc700 (LWP 22552)] QSocketNotifier: Can only be used with threads started with QThread QSocketNotifier: Can only be used with threads started with QThread QSocketNotifier: Can only be used with threads started with QThread QSocketNotifier: Can only be used with threads started with QThread LibreOffice(22465)/kio (Scheduler) KIO::SchedulerPrivate::doJob: KIO is not thread-safe. QObject::startTimer: QTimer can only be used with threads started with QThread QObject::startTimer: QTimer can only be used with threads started with QThread QObject::installEventFilter(): Cannot filter events for objects in a different thread. QObject::startTimer: QTimer can only be used with threads started with QThread QObject::startTimer: QTimer can only be used with threads started with QThread QObject::startTimer: QTimer can only be used with threads started with QThread QObject::startTimer: QTimer can only be used with threads started with QThread This seems to be related to bug #59989, except this doen't crash LO but freezes it.
Comment on attachment 88514 [details] Extension source and binary (CrashTest.oxt) Mimetype fixed
Reproducable with LO V4.1.1 and V4.1.3, also the effect with OOO_FORCE_DESKTOP (or changing to GNOME at login). I will attach a very simple extension with just one presentation template which causes LO to freeze; seems to be independent of the content of the extension.
Created attachment 89030 [details] Very simple extension causing LO to freeze with KDE4
Created attachment 89100 [details] Redirect file picker handling to main thread + X The patch redirects the file picker handling to the UI thread. I'm not sure if the deletion has also to occur in the UI threads, but it seems to work. There is still the repaint problem (bug #69002), which will eventually crash LO anyway.
The patch was committed to "master": http://cgit.freedesktop.org/libreoffice/core/commit/?id=fa8b5ae8e24fe26de7b26eff8a4a523ab22408fa @Jan-Marek Glogowski: First thank you for fixing those annoying qt\kde bugs! Would be great if you could start your commit messages with 'fdo#12345' so we could get automatic commit notification.