FS#24916 - Qt Designer crashes when activating open/saveas dialog

Attached to Project: Arch Linux
Opened by kachelaqa (kachelaqa) - Monday, 27 June 2011, 22:31 GMT
Last edited by Andrea Scarpino (BaSh) - Friday, 30 December 2011, 04:16 GMT
Task Type Bug Report
Category Packages: Extra
Status Closed
Assigned To Andrea Scarpino (BaSh)
Architecture i686
Severity Low
Priority Normal
Reported Version
Due in Version Undecided
Due Date Undecided
Percent Complete 100%
Votes 8
Private No

Details

Description:

after the recent glibc upgrade, qt designer crashes when attempting to activate the open/saveas dialogs. downgrading to glibc-2.13-5 fixes the problem.

Versions affected:
qt-4.7.3-3
glibc-2.14-4
This task depends upon

Closed by  Andrea Scarpino (BaSh)
Friday, 30 December 2011, 04:16 GMT
Reason for closing:  Fixed
Additional comments about closing:  qt 4.8-1
Comment by robert r (crobe) - Saturday, 09 July 2011, 10:37 GMT
Thanks for the hint about glibc, I was running up the walls as I thought that is bug after the latest KDE upgrade.

Some more information:

makekdewidgets(27309) Sonnet::DictionaryComboBox::reloadCombo: Populate combo: "English (United States of America)" : "en_US"
makekdewidgets(27309) Sonnet::DictionaryComboBox::reloadCombo: Populate combo: "German (Austria)" : "de_AT"
makekdewidgets(27309) Sonnet::DictionaryComboBox::reloadCombo: Populate combo: "German (Germany)" : "de_DE"
makekdewidgets(27309) Sonnet::DictionaryComboBox::reloadCombo: Populate combo: "German (Switzerland)" : "de_CH"
QMetaProperty::read: Unable to handle unregistered datatype 'KUrl' for property 'KUrlRequester::url'
QMetaProperty::read: Unable to handle unregistered datatype 'QList<QColor>' for property 'KColorCombo::colors'
Application asked to unregister timer 0x5e000007 which is not registered in this thread. Fix application.
Application asked to unregister timer 0x61000002 which is not registered in this thread. Fix application.
QMetaProperty::read: Unable to handle unregistered datatype 'SelectionBehavior' for property 'QTabBar::selectionBehaviorOnRemove'
Application asked to unregister timer 0x51000007 which is not registered in this thread. Fix application.
makekdewidgets(27309) fileModule: Failed to load configured file module "kfilemodule"
Speicherzugriffsfehler

kfilemodule.so is in place.

For downgrading the following packages work for me:

glibc-2.13-5 binutils-2.21-7 gcc-libs-4.6.0-6 gcc-4.6.0-6 libtool-2.4-3

-rob
Comment by Javier Ramos (javierRH) - Tuesday, 12 July 2011, 15:45 GMT
Same problem here, in x86_64 version.

I can't / don't know how to downgrade glibc safely (last time I try, broke entire system). Any other solution?
Downgrading qt to 4.7.2-6 don't work neither

- Jrh
Comment by Andrea Scarpino (BaSh) - Tuesday, 12 July 2011, 17:07 GMT Comment by kachelaqa (kachelaqa) - Tuesday, 12 July 2011, 18:35 GMT
@andrea
i tried your i686 package - but designer is still crashing

Comment by Andrea Scarpino (BaSh) - Saturday, 16 July 2011, 13:24 GMT
long shot: do you use phonon-xine? if so, try replacing it.
Comment by kachelaqa (kachelaqa) - Saturday, 16 July 2011, 15:56 GMT
@andrea
no, i use phonon-gstreamer
Comment by kachelaqa (kachelaqa) - Saturday, 16 July 2011, 21:01 GMT
not sure whether this will help, but i recompiled qt with debugging and got this backtrace:

Program received signal SIGSEGV, Segmentation fault.
0xb53db79d in KFileDialog::KFileDialog(KUrl const&, QString const&, QWidget*, QWidget*) () from /usr/lib/libkio.so.5
(gdb) bt
#0 0xb53db79d in KFileDialog::KFileDialog(KUrl const&, QString const&, QWidget*, QWidget*) () from /usr/lib/libkio.so.5
#1 0xb53e0fe5 in ?? () from /usr/lib/libkio.so.5
#2 0xb723b05a in QFileDialog::getOpenFileNames (parent=0xbfffe534, caption=..., dir=..., filter=..., selectedFilter=0x0, options=...)
at dialogs/qfiledialog.cpp:1789
#3 0x080851e7 in QDesignerActions::openForm (this=0x8d4fba8, parent=0x0) at qdesigner_actions.cpp:603
#4 0x080853ef in QDesignerActions::slotOpenForm (this=0x8d4fba8) at qdesigner_actions.cpp:595
#5 0x080948c2 in QDesignerActions::qt_metacall (this=0x8d4fba8, _c=QMetaObject::InvokeMetaMethod, _id=<value optimized out>,
_a=0xbfffe7f8) at .moc/debug-shared/moc_qdesigner_actions.cpp:122
#6 0xb68cc3ec in metacall (object=0x8d4fba8, cl=QMetaObject::InvokeMetaMethod, idx=7, argv=0xbfffe7f8) at kernel/qmetaobject.cpp:237
#7 QMetaObject::metacall (object=0x8d4fba8, cl=QMetaObject::InvokeMetaMethod, idx=7, argv=0xbfffe7f8) at kernel/qmetaobject.cpp:232
#8 0xb68db670 in QMetaObject::activate (sender=0x8afe178, m=0x80b3890, local_signal_index=1, argv=0xbfffe7f8) at kernel/qobject.cpp:3278
#9 0xb6c76c8d in QAction::triggered (this=0x8afe178, _t1=false) at .moc/debug-shared/moc_qaction.cpp:263
#10 0xb6c76f2b in QAction::activate (this=0x8afe178, event=QAction::Trigger) at kernel/qaction.cpp:1257
#11 0xb71d3710 in trigger (this=0x847b190) at ../../include/QtGui/../../src/gui/kernel/qaction.h:218
#12 QToolButton::nextCheckState (this=0x847b190) at widgets/qtoolbutton.cpp:1147
#13 0xb70ea467 in QAbstractButtonPrivate::click (this=0x8d2ea80) at widgets/qabstractbutton.cpp:528
#14 0xb70ea766 in QAbstractButton::mouseReleaseEvent (this=0x847b190, e=0xbfffede8) at widgets/qabstractbutton.cpp:1121
#15 0xb71d37ad in QToolButton::mouseReleaseEvent (this=0x847b190, e=0xbfffede8) at widgets/qtoolbutton.cpp:721
#16 0xb6ce2826 in QWidget::event (this=0x847b190, event=0xbfffede8) at kernel/qwidget.cpp:8259
#17 0xb70e98d9 in QAbstractButton::event (this=0x847b190, e=0xbfffede8) at widgets/qabstractbutton.cpp:1080
#18 0xb71d503c in QToolButton::event (this=0x847b190, event=0xbfffede8) at widgets/qtoolbutton.cpp:1163
#19 0xb6c7e3ec in notify_helper (this=0x80b4f20, receiver=0x847b190, e=0xbfffede8) at kernel/qapplication.cpp:4462
#20 QApplicationPrivate::notify_helper (this=0x80b4f20, receiver=0x847b190, e=0xbfffede8) at kernel/qapplication.cpp:4434
#21 0xb6c85266 in QApplication::notify (this=0x80b4f20, receiver=0x847b190, e=0xbfffede8) at kernel/qapplication.cpp:4023
#22 0xb68c534e in QCoreApplication::notifyInternal (this=0xbffff528, receiver=0x847b190, event=0xbfffede8)
at kernel/qcoreapplication.cpp:731
#23 0xb6c7f971 in sendEvent (receiver=0x847b190, event=0xbfffede8, alienWidget=0x847b190, nativeWidget=0x8480428, buttonDown=0xb76a5934,
lastMouseReceiver=..., spontaneous=true) at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:215
#24 QApplicationPrivate::sendMouseEvent (receiver=0x847b190, event=0xbfffede8, alienWidget=0x847b190, nativeWidget=0x8480428,
buttonDown=0xb76a5934, lastMouseReceiver=..., spontaneous=true) at kernel/qapplication.cpp:3122
#25 0xb6d15db7 in QETWidget::translateMouseEvent (this=0x8480428, event=0xbffff1c0) at kernel/qapplication_x11.cpp:4461
#26 0xb6d145d7 in QApplication::x11ProcessEvent (this=0xbffff528, event=0xbffff1c0) at kernel/qapplication_x11.cpp:3587
#27 0xb6d411ac in x11EventSourceDispatch (s=0x80b8c40, callback=0, user_data=0x0) at kernel/qguieventdispatcher_glib.cpp:146
#28 0xb6167c4f in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0
#29 0xb61683b0 in ?? () from /usr/lib/libglib-2.0.so.0
#30 0xb61686da in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0
#31 0xb68f7a4a in QEventDispatcherGlib::processEvents (this=0x80b5a30, flags=...) at kernel/qeventdispatcher_glib.cpp:422
#32 0xb6d40d9a in QGuiEventDispatcherGlib::processEvents (this=0x80b5a30, flags=...) at kernel/qguieventdispatcher_glib.cpp:204
#33 0xb68c3a1d in QEventLoop::processEvents (this=0xbffff4c4, flags=...) at kernel/qeventloop.cpp:149
#34 0xb68c3c69 in QEventLoop::exec (this=0xbffff4c4, flags=...) at kernel/qeventloop.cpp:201
#35 0xb68c984d in QCoreApplication::exec () at kernel/qcoreapplication.cpp:1008
#36 0xb6c7c134 in QApplication::exec () at kernel/qapplication.cpp:3736
#37 0x0805932b in main (argc=1, argv=0xbffff5f4) at main.cpp:57
Comment by Javier Ramos (javierRH) - Monday, 18 July 2011, 16:01 GMT
Search de web, i have found that if set $QT_PLUGIN_PATH="" then designer works again (no crash anymore on open file dialog).
In my system $QT_PLUGIN_PATH points to "/home/javier/.kde4/lib/kde4/plugins/:/usr/lib/kde4/plugins/" but the first folder doesn't exists.

It looks like a plugin related problem.

Doing more test, if I delete the kdewidgets.so plugin everything seems to work.

Hope this help !!!
Comment by kachelaqa (kachelaqa) - Monday, 18 July 2011, 16:45 GMT
@javier
good find! deleting the kdewidgets.so plugin also works for me.
Comment by Jonas Nyrén (jonas) - Wednesday, 20 July 2011, 00:21 GMT
Confirmed; I experience the exact same thing. As noted previously the issue can be worked around by unsetting the $QT_PLUGIN_PATH variable.
Comment by Andrea Scarpino (BaSh) - Wednesday, 20 July 2011, 09:18 GMT
Are you using KDE or some WM?
Comment by kachelaqa (kachelaqa) - Wednesday, 20 July 2011, 14:56 GMT
@andrea
i'm using kde.

a couple of other things i tried before deleting the kdewidgets.so plugin:
(1) login as a new user
(2) switch from qtcurve to plastique style
...but obviously neither had any effect

i really wish the qt devs wouldn't force native file-dialogs on users - it should be optional
Comment by Sebastian Wiesner (lunaryorn) - Wednesday, 20 July 2011, 15:17 GMT
@kachelaqa: Native dialogs are not at all related to this issue. These dialogs are provided by the KDE platfrom plugin at "/usr/lib/kde4/plugins/gui_platform/libkde.so", a *completely different* library. That's why despite this issue these dialogs are still working in other plain Qt applications like Qt Creator or VirtualBox

The "kdewidgets.so" plugin provides a Qt Designer plugin for the core KDE widgets from "libkdeui". It makes KDE widgets appear in the widgets collection of the designer and allows to design user interfaces containing KDE widgets. This kind of plugin is specific to the Qt designer, and consequently this issue only affects the Qt designer, but not any other plain Qt application.

Comment by kachelaqa (kachelaqa) - Wednesday, 20 July 2011, 15:59 GMT
@sebastian
nope. if you remove kdewidgets.so *and* libkde.so, qt designer/linguist will still show a native file-dialog rather than a qt file-dialog.

what i want is a global option to switch off the use of native dialogs (whether kde or otherwise) for *all* pure-qt applications.

this is mainly because i find the kde file-dialogs can be irritatingly slow to open compared to the qt ones.

Comment by Sebastian Wiesner (lunaryorn) - Wednesday, 20 July 2011, 16:07 GMT
@kachelaqa: Again, "kdewidgets.so" is *not* related to KDE dialogs in Qt programs. If you want native dialogs you only have to remove "libkde.so". However, this library and thus KDE dialogs are *not at all* related to this issue. The issue is caused by "kdewidgets.so" and therefore specific to the Qt Designer. Other Qt applications are not affected by this issue and do not segfault.

This issue tracker and especially this issue is certainly not the right place to generally discuss the pros and cons of a certain Qt feature. Feature requests concerning Qt should be reported to the Qt issue tracker.
Comment by kachelaqa (kachelaqa) - Wednesday, 20 July 2011, 16:44 GMT
@sebastian
thank you, but i'm perfectly well aware of what the various plugins do, and of which applications are affected and how.

even so, i will repeat that removing libkde.so *will not* prevent qt designer (or linguist or virtualbox) from showing a kde file-dialog, even though it does for certain other pure-qt applications (such as smplayer).

i suspect that if qt designer used its own file-dialogs, this issue might not occur.
Comment by kachelaqa (kachelaqa) - Wednesday, 20 July 2011, 18:01 GMT
well, it appears my suspicions may have been correct - i had another play with the qtcurve settings and made some real progress!

the qtcurve config dialog has a setting under 'Applications' called 'Use Qt file dialog'. this /should/ allow native dialogs to be removed on a per application basis, but, for some reason this has never previously worked for me so i overlooked it. however, i gave it another try and the upshot is that i have been able to reinstall the kdewidgets.so plugin and designer now shows qt file-dialogs with no segfaults. (nb: this only works for me if i *also* remove the libkde.so plugin).

this is the best workaround so far, as it restores all previous functionality.

ps: i have also been able to restore my $QT_PLUGIN_PATH so that it includes '/usr/lib/kde4/plugins/'
Comment by Sebastian Wiesner (lunaryorn) - Wednesday, 20 July 2011, 18:50 GMT
@kachelaqa: I stand corrected. Native dialogs aren't done through a plugin, but directly in the KDE IO library. Any plugin that links against "libkio.so" will cause KDE file dialogs to be used by Qt applications. QtCurve apparently just resets these hooks.

Still, the dialogs are probably only symptom, but not the cause, because obviously only applications which load "kdewidgets.so" are affected.
Comment by Tavian Barnes (tavianator) - Saturday, 01 October 2011, 16:23 GMT
Bump? Any progress on this? Upstream report?
Comment by Andrea Scarpino (BaSh) - Thursday, 29 December 2011, 16:07 GMT
I cannot reproduce it anymore.
Comment by kachelaqa (kachelaqa) - Thursday, 29 December 2011, 20:58 GMT
@andrea
i can confirm that the problem no longer occurs for me with qt-4.8.0

Loading...