Bug 222060 - System Settings crashes after closing its window if the GHNS dialog is being shown [QList, KNS::Engine::downloadDialogModal, KCMStyle::getNewThemes]
Summary: System Settings crashes after closing its window if the GHNS dialog is being ...
Status: RESOLVED FIXED
Alias: None
Product: systemsettings
Classification: Applications
Component: kcm_style (show other bugs)
Version: unspecified
Platform: openSUSE Linux
: NOR crash
Target Milestone: ---
Assignee: System Settings Bugs
URL:
Keywords:
: 234695 242960 (view as bug list)
Depends on:
Blocks:
 
Reported: 2010-01-10 15:02 UTC by Thomas Richard
Modified: 2010-06-28 01:17 UTC (History)
7 users (show)

See Also:
Latest Commit:
Version Fixed In:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Thomas Richard 2010-01-10 15:02:57 UTC
Application: systemsettings (1.0)
KDE Platform Version: 4.3.90 (KDE 4.3.90 (KDE 4.4 RC1)) "release 210"
Qt Version: 4.6.0
Operating System: Linux 2.6.31.8-0.1-default i686
Distribution: "openSUSE 11.2 (i586)"

-- Information about the crash:
When you open

system settings ==> Appearance ==> Style ==> Worskpace and click get new themes

Systemsettings will crash when you close the systemsettings window before you close the get new themes window. It happens with all get new hot stuff things in system settings btw.

The crash can be reproduced every time.

 -- Backtrace:
Application: System Settings (systemsettings), signal: Segmentation fault
[Current thread is 1 (Thread 0xb5366760 (LWP 3212))]

Thread 2 (Thread 0xa658fb70 (LWP 3214)):
#0  0xffffe430 in __kernel_vsyscall ()
#1  0xb5af40c2 in pthread_cond_timedwait@@GLIBC_2.3.2 () from /lib/libpthread.so.0
#2  0xb62352d4 in pthread_cond_timedwait () from /lib/libc.so.6
#3  0xb640fffc in wait (time=<value optimized out>, this=<value optimized out>) at thread/qwaitcondition_unix.cpp:85
#4  QWaitCondition::wait (time=<value optimized out>, this=<value optimized out>) at thread/qwaitcondition_unix.cpp:159
#5  0xb640470e in QThreadPoolThread::run (this=0x882d938) at concurrent/qthreadpool.cpp:140
#6  0xb640f01f in QThreadPrivate::start (arg=0x882d938) at thread/qthread_unix.cpp:244
#7  0xb5aef6e5 in start_thread () from /lib/libpthread.so.0
#8  0xb5aef600 in ?? () from /lib/libpthread.so.0

Thread 1 (Thread 0xb5366760 (LWP 3212)):
[KCrash Handler]
#6  firstNode (this=<value optimized out>) at /usr/include/QtCore/qhash.h:185
#7  constBegin (this=<value optimized out>) at /usr/include/QtCore/qhash.h:461
#8  constBegin (this=<value optimized out>) at /usr/include/QtCore/qset.h:163
#9  toList (this=<value optimized out>) at /usr/include/QtCore/qset.h:295
#10 QList<KNS::Entry*>::fromSet (this=<value optimized out>) at /usr/include/QtCore/qset.h:322
#11 0xb28dfd1d in KNS::Engine::downloadDialogModal (this=0xbfc8be2c, parent=0x8602c78) at /usr/src/debug/kdelibs-4.3.90/knewstuff/knewstuff2/engine.cpp:221
#12 0xb2be78dc in KCMStyle::getNewThemes (this=0x8602c78) at /usr/src/debug/kdebase-workspace-4.3.90/kcontrol/style/kcmstyle.cpp:727
#13 0xb2beb6a4 in KCMStyle::qt_metacall (this=0x8602c78, _c=InvokeMetaMethod, _id=42, _a=0xbfc8bf58) at /usr/src/debug/kdebase-workspace-4.3.90/build/kcontrol/style/kcmstyle.moc:87
#14 0xb651cd4d in QMetaObject::metacall (object=0x8602c78, cl=177108709, idx=42, argv=0xbfc8bf58) at kernel/qmetaobject.cpp:237
#15 0xb652bb76 in QMetaObject::activate (sender=0x81ffa68, m=0xb73c09a4, local_signal_index=2, argv=0xbfc8bf58) at kernel/qobject.cpp:3294
#16 0xb71b352d in QAbstractButton::clicked(bool) () from /usr/lib/libQtGui.so.4
#17 0xb6e821cd in ?? () from /usr/lib/libQtGui.so.4
#18 0xb6e8311b in ?? () from /usr/lib/libQtGui.so.4
#19 0xb6e833c6 in QAbstractButton::mouseReleaseEvent(QMouseEvent*) () from /usr/lib/libQtGui.so.4
#20 0xb6aca731 in QWidget::event(QEvent*) () from /usr/lib/libQtGui.so.4
#21 0xb6e82060 in QAbstractButton::event(QEvent*) () from /usr/lib/libQtGui.so.4
#22 0xb6f2ead8 in QPushButton::event(QEvent*) () from /usr/lib/libQtGui.so.4
#23 0xb6a6b1dc in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/libQtGui.so.4
#24 0xb6a722e2 in QApplication::notify(QObject*, QEvent*) () from /usr/lib/libQtGui.so.4
#25 0xb7545e91 in KApplication::notify (this=0xbfc8ce4c, receiver=0x81ffa68, event=0xbfc8c5e0) at /usr/src/debug/kdelibs-4.3.90/kdeui/kernel/kapplication.cpp:302
#26 0xb65179de in QCoreApplication::notifyInternal (this=0xbfc8ce4c, receiver=0x81ffa68, event=0xbfc8c5e0) at kernel/qcoreapplication.cpp:704
#27 0xb6a71944 in QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool) () from /usr/lib/libQtGui.so.4
#28 0xb6afd18a in ?? () from /usr/lib/libQtGui.so.4
#29 0xb6afc734 in QApplication::x11ProcessEvent(_XEvent*) () from /usr/lib/libQtGui.so.4
#30 0xb6b29da8 in ?? () from /usr/lib/libQtGui.so.4
#31 0xb5a134c2 in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0
#32 0xb5a16d98 in ?? () from /usr/lib/libglib-2.0.so.0
#33 0xb5a16ebe in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0
#34 0xb6544671 in QEventDispatcherGlib::processEvents (this=0x8081d88, flags=...) at kernel/qeventdispatcher_glib.cpp:407
#35 0xb6b298fa in ?? () from /usr/lib/libQtGui.so.4
#36 0xb651604d in QEventLoop::processEvents (this=0xbfc8cda4, flags=) at kernel/qeventloop.cpp:149
#37 0xb6516499 in QEventLoop::exec (this=0xbfc8cda4, flags=...) at kernel/qeventloop.cpp:201
#38 0xb651a610 in QCoreApplication::exec () at kernel/qcoreapplication.cpp:981
#39 0xb6a6b284 in QApplication::exec() () from /usr/lib/libQtGui.so.4
#40 0x08055f95 in main (argc=5, argv=0xbfc8cf84) at /usr/src/debug/kdebase-workspace-4.3.90/systemsettings/app/main.cpp:49

Reported using DrKonqi
Comment 1 Dario Andres 2010-01-10 15:36:26 UTC
I could reproduce the crash here using:

Qt: 4.6.0 (kde-qt master commit 747ff8e6ef6f5a1163dfa75bc9ac4755ce7083d1
        Date:   Tue Dec 15 11:58:13 2009 +0100)
KDE Development Platform: 4.4.59 (KDE 4.4.59 (KDE 4.5 >= 20100107))
kdelibs svn rev. 1072256 / kdebase svn rev. 1072256
on ArchLinux i686 - Kernel 2.6.31.6

The backtrace I got is a bit different...
Comment 2 Frederik Gladhorn 2010-01-10 19:01:40 UTC
Hi,
Dario asked me to write a small conclusion about this...
The problem is the old KNewStuff2 framework creates it's own eventloop and doesn't take care of the parenting really. So in the end, when it's parent is deleted, the world falls apart. It basically expects to be modal (and maybe even fails at being that).
Since the code is quite a mess, KNewStuff3 with clean public API was created and will be used widely starting with KDE SC 4.5.
As fix we could port this dialog to use KNS3 for SC 4.4. - Dario has a patch for that.
Greetings
Frederik
Comment 3 Dario Andres 2010-02-21 18:03:34 UTC
SVN commit 1093878 by darioandres:

- Port Plasma Themes to KHNS3
- Reduce the code duplication a bit

BUG: 222060
CCMAIL: gladhorn@kde.org



 M  +1 -1      CMakeLists.txt  
 M  +5 -17     kcmstyle.cpp  


WebSVN link: http://websvn.kde.org/?view=rev&revision=1093878
Comment 4 Dario Andres 2010-02-21 18:05:28 UTC
SVN commit 1093880 by darioandres:

Backport to 4.4 of:
SVN commit 1093878 by darioandres:

- Port Plasma Themes to KHNS3
- Reduce the code duplication a bit

CCBUG: 222060
CCMAIL: gladhorn@kde.org


 M  +1 -1      CMakeLists.txt  
 M  +5 -17     kcmstyle.cpp  


WebSVN link: http://websvn.kde.org/?view=rev&revision=1093880
Comment 5 Dario Andres 2010-02-21 19:42:04 UTC
I had to revert the commits because there is a Klassroom taking place to
properly fix those issues, and backporting to 4.4 doesn't seem to be safe.
Comment 6 Dario Andres 2010-03-20 13:27:21 UTC
Ported to knewstuff3 (svn rev. 1099453)
- Patch by Dynamite (forum.kde.org klassroom)

Closing as FIXED
Comment 7 Jonathan Thomas 2010-04-18 22:08:35 UTC
*** Bug 234695 has been marked as a duplicate of this bug. ***
Comment 8 Christoph Feck 2010-06-28 01:17:20 UTC
*** Bug 242960 has been marked as a duplicate of this bug. ***