Bug 71145 - Java extension freezes LO with KDE4 backend especially with native dialogs.
Summary: Java extension freezes LO with KDE4 backend especially with native dialogs.
Status: RESOLVED FIXED
Alias: None
Product: LibreOffice
Classification: Unclassified
Component: Extensions (show other bugs)
Version:
(earliest affected)
4.2.0.0.alpha0+ Master
Hardware: Other Linux (All)
: medium major
Assignee: Not Assigned
URL:
Whiteboard: target:4.2.0
Keywords:
Depends on:
Blocks:
 
Reported: 2013-11-01 21:36 UTC by Jan-Marek Glogowski
Modified: 2013-11-20 14:24 UTC (History)
1 user (show)

See Also:
Crash report or crash signature:


Attachments
Extension source and binary (CrashTest.oxt) (24.87 KB, application/gzip)
2013-11-01 21:36 UTC, Jan-Marek Glogowski
Details
Very simple extension causing LO to freeze with KDE4 (15.36 KB, application/vnc.openofficeorg.extension)
2013-11-11 14:21 UTC, Bengt Giger
Details
Redirect file picker handling to main thread + X (30.98 KB, patch)
2013-11-12 16:03 UTC, Jan-Marek Glogowski
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Jan-Marek Glogowski 2013-11-01 21:36:31 UTC
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 1 Julien Nabet 2013-11-02 21:16:29 UTC
Comment on attachment 88514 [details]
Extension source and binary (CrashTest.oxt)

Mimetype fixed
Comment 2 Bengt Giger 2013-11-11 14:18:30 UTC
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.
Comment 3 Bengt Giger 2013-11-11 14:21:05 UTC
Created attachment 89030 [details]
Very simple extension causing LO to freeze with KDE4
Comment 4 Jan-Marek Glogowski 2013-11-12 16:03:46 UTC
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.
Comment 5 Maxim Monastirsky 2013-11-20 14:24:25 UTC
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.