Bug 182138

Summary: Plasma crashes when installing osx widget
Product: [Unmaintained] kio Reporter: Ruchir Brahmbhatt <ruchir.brahmbhatt>
Component: generalAssignee: Plasma Bugs List <plasma-bugs>
Status: RESOLVED FIXED    
Severity: crash CC: andresbajotierra, ar, asraniel, chicojmv, ervin, faure, jonasfa, nadavkav
Priority: NOR    
Version: unspecified   
Target Milestone: ---   
Platform: openSUSE   
OS: Unspecified   
Latest Commit: Version Fixed In:
Sentry Crash Report:
Attachments: no gui handling from KJob::exec

Description Ruchir Brahmbhatt 2009-01-28 09:51:32 UTC
Version:           4.1.96-48.11 (using KDE 4.1.96)
Installed from:    SuSE RPMs

OS: Opensuse 11.1
KDE: 4.2 RC1 using opensuse factory repository

Steps to reproduce:
1. Right click and unlock desktop.
2. Right click and click add new widget.
3. Select install widget from file.
4. Download and install widget available at following url.
http://www.apple.com/downloads/dashboard/information/starrynightwidget.html

Expected result:
Widget should be installed.

Actual result:
Plasma crashes with backtrace as given below and also installs widget(its not usable though).

Backtrace:
Application: Plasma Workspace (plasma), signal SIGABRT
[Current thread is 1 (Thread 0xb51cf700 (LWP 3942))]

Thread 3 (Thread 0xa9c95b90 (LWP 3947)):
#0  0xffffe430 in __kernel_vsyscall ()
#1  0xb64aac35 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/libpthread.so.0
#2  0xb650a872 in QWaitCondition::wait(QMutex*, unsigned long) () from /usr/lib/libQtCore.so.4
#3  0xb79010d2 in ?? () from /usr/lib/libQtNetwork.so.4
#4  0xb650985e in ?? () from /usr/lib/libQtCore.so.4
#5  0xb64a71b5 in start_thread () from /lib/libpthread.so.0
#6  0xb62e938e in clone () from /lib/libc.so.6

Thread 2 (Thread 0xa9433b90 (LWP 3949)):
#0  0xffffe430 in __kernel_vsyscall ()
#1  0xb64aac35 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/libpthread.so.0
#2  0xb650a872 in QWaitCondition::wait(QMutex*, unsigned long) () from /usr/lib/libQtCore.so.4
#3  0xa9d3d72a in ?? () from /usr/lib/kde4/plasma_wallpaper_image.so
#4  0xb650985e in ?? () from /usr/lib/libQtCore.so.4
#5  0xb64a71b5 in start_thread () from /lib/libpthread.so.0
#6  0xb62e938e in clone () from /lib/libc.so.6

Thread 1 (Thread 0xb51cf700 (LWP 3942)):
[KCrash Handler]
#6  0xffffe430 in __kernel_vsyscall ()
#7  0xb6242990 in raise () from /lib/libc.so.6
#8  0xb62442c8 in abort () from /lib/libc.so.6
#9  0xb6284683 in ?? () from /lib/libc.so.6
#10 0xb6285edb in free () from /lib/libc.so.6
#11 0xb6466ec1 in operator delete(void*) () from /usr/lib/libstdc++.so.6
#12 0xb65f8395 in QEventLoop::~QEventLoop() () from /usr/lib/libQtCore.so.4
#13 0xb6607c1f in QObjectPrivate::deleteChildren() () from /usr/lib/libQtCore.so.4
#14 0xb6610763 in QObject::~QObject() () from /usr/lib/libQtCore.so.4
#15 0xb73223c1 in KJob::~KJob() () from /usr/lib/libkdecore.so.5
#16 0xb73211f8 in KCompositeJob::~KCompositeJob() () from /usr/lib/libkdecore.so.5
#17 0xb7a42548 in KIO::Job::~Job() () from /usr/lib/libkio.so.5
#18 0xb7a1ae8d in KIO::CopyJob::~CopyJob() () from /usr/lib/libkio.so.5
#19 0xb660790c in qDeleteInEventHandler(QObject*) () from /usr/lib/libQtCore.so.4
#20 0xb66092b3 in QObject::event(QEvent*) () from /usr/lib/libQtCore.so.4
#21 0xb68698fc in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/libQtGui.so.4
#22 0xb687175e in QApplication::notify(QObject*, QEvent*) () from /usr/lib/libQtGui.so.4
#23 0xb76508fd in KApplication::notify(QObject*, QEvent*) () from /usr/lib/libkdeui.so.5
#24 0xb65f9961 in QCoreApplication::notifyInternal(QObject*, QEvent*) () from /usr/lib/libQtCore.so.4
#25 0xb65fa5d5 in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) () from /usr/lib/libQtCore.so.4
#26 0xb65fa7cd in QCoreApplication::sendPostedEvents(QObject*, int) () from /usr/lib/libQtCore.so.4
#27 0xb662436f in ?? () from /usr/lib/libQtCore.so.4
#28 0xb55df9a8 in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0
#29 0xb55e3063 in ?? () from /usr/lib/libglib-2.0.so.0
#30 0xb55e3221 in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0
#31 0xb6623fb8 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
#32 0xb6902785 in ?? () from /usr/lib/libQtGui.so.4
#33 0xb65f801a in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
#34 0xb65f81da in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
#35 0xb7ad2c6b in KIO::NetAccess::enter_loop() () from /usr/lib/libkio.so.5
#36 0xb7ad332f in KIO::NetAccess::synchronousRunInternal(KIO::Job*, QWidget*, QByteArray*, KUrl*, QMap<QString, QString>*) () from /usr/lib/libkio.so.5
#37 0xb7ad39e1 in KIO::NetAccess::synchronousRun(KIO::Job*, QWidget*, QByteArray*, KUrl*, QMap<QString, QString>*) () from /usr/lib/libkio.so.5
#38 0xb7c5a499 in KFileWidget::slotOk() () from /usr/lib/libkfile.so.4
#39 0xb7c5677c in ?? () from /usr/lib/libkfile.so.4
#40 0xb7c591ba in KFileWidget::qt_metacall(QMetaObject::Call, int, void**) () from /usr/lib/libkfile.so.4
#41 0xb660e580 in QMetaObject::activate(QObject*, int, int, void**) () from /usr/lib/libQtCore.so.4
#42 0xb660f302 in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) () from /usr/lib/libQtCore.so.4
#43 0xb7c36e93 in KDirOperator::fileSelected(KFileItem const&) () from /usr/lib/libkfile.so.4
#44 0xb7c37c69 in KDirOperator::selectFile(KFileItem const&) () from /usr/lib/libkfile.so.4
#45 0xb7c37d26 in KDirOperator::Private::_k_slotDoubleClicked(QModelIndex const&) () from /usr/lib/libkfile.so.4
#46 0xb7c43122 in KDirOperator::qt_metacall(QMetaObject::Call, int, void**) () from /usr/lib/libkfile.so.4
#47 0xb660e580 in QMetaObject::activate(QObject*, int, int, void**) () from /usr/lib/libQtCore.so.4
#48 0xb660f302 in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) () from /usr/lib/libQtCore.so.4
#49 0xb6d29fe3 in QAbstractItemView::doubleClicked(QModelIndex const&) () from /usr/lib/libQtGui.so.4
#50 0xb6d2bdb1 in QAbstractItemView::mouseDoubleClickEvent(QMouseEvent*) () from /usr/lib/libQtGui.so.4
#51 0xb68c18b2 in QWidget::event(QEvent*) () from /usr/lib/libQtGui.so.4
#52 0xb6bf7a83 in QFrame::event(QEvent*) () from /usr/lib/libQtGui.so.4
#53 0xb6c8e1bf in QAbstractScrollArea::viewportEvent(QEvent*) () from /usr/lib/libQtGui.so.4
#54 0xb6d38f3f in QAbstractItemView::viewportEvent(QEvent*) () from /usr/lib/libQtGui.so.4
#55 0xb6c90765 in ?? () from /usr/lib/libQtGui.so.4
#56 0xb65f8b3a in QCoreApplicationPrivate::sendThroughObjectEventFilters(QObject*, QEvent*) () from /usr/lib/libQtCore.so.4
#57 0xb68698da in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/libQtGui.so.4
#58 0xb6872111 in QApplication::notify(QObject*, QEvent*) () from /usr/lib/libQtGui.so.4
#59 0xb76508fd in KApplication::notify(QObject*, QEvent*) () from /usr/lib/libkdeui.so.5
#60 0xb65f9961 in QCoreApplication::notifyInternal(QObject*, QEvent*) () from /usr/lib/libQtCore.so.4
#61 0xb687139e in QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&) () from /usr/lib/libQtGui.so.4
#62 0xb68db716 in ?? () from /usr/lib/libQtGui.so.4
#63 0xb68daac5 in QApplication::x11ProcessEvent(_XEvent*) () from /usr/lib/libQtGui.so.4
#64 0xb690308a in ?? () from /usr/lib/libQtGui.so.4
#65 0xb55df9a8 in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0
#66 0xb55e3063 in ?? () from /usr/lib/libglib-2.0.so.0
#67 0xb55e3221 in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0
#68 0xb6623fb8 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
#69 0xb6902785 in ?? () from /usr/lib/libQtGui.so.4
#70 0xb65f801a in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
#71 0xb65f81da in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
#72 0xb7322251 in KJob::exec() () from /usr/lib/libkdecore.so.5
#73 0xa8c1c287 in ?? () from /usr/lib/kde4/plasma_packagestructure_dashboard.so
#74 0xb7f14636 in ?? () from /usr/lib/libkdeinit4_plasma.so
#75 0xb7f14c8b in ?? () from /usr/lib/libkdeinit4_plasma.so
#76 0xb660e580 in QMetaObject::activate(QObject*, int, int, void**) () from /usr/lib/libQtCore.so.4
#77 0xb660f302 in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) () from /usr/lib/libQtCore.so.4
#78 0xb7c50427 in KFileWidget::accepted() () from /usr/lib/libkfile.so.4
#79 0xb7c5b29b in KFileWidget::slotOk() () from /usr/lib/libkfile.so.4
#80 0xb7c5677c in ?? () from /usr/lib/libkfile.so.4
#81 0xb7c591ba in KFileWidget::qt_metacall(QMetaObject::Call, int, void**) () from /usr/lib/libkfile.so.4
#82 0xb660e580 in QMetaObject::activate(QObject*, int, int, void**) () from /usr/lib/libQtCore.so.4
#83 0xb660f302 in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) () from /usr/lib/libQtCore.so.4
#84 0xb7c36e93 in KDirOperator::fileSelected(KFileItem const&) () from /usr/lib/libkfile.so.4
#85 0xb7c37c69 in KDirOperator::selectFile(KFileItem const&) () from /usr/lib/libkfile.so.4
#86 0xb7c37dd4 in KDirOperator::Private::_k_slotActivated(QModelIndex const&) () from /usr/lib/libkfile.so.4
#87 0xb7c4313c in KDirOperator::qt_metacall(QMetaObject::Call, int, void**) () from /usr/lib/libkfile.so.4
#88 0xb660e580 in QMetaObject::activate(QObject*, int, int, void**) () from /usr/lib/libQtCore.so.4
#89 0xb660f302 in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) () from /usr/lib/libQtCore.so.4
#90 0xb6d29f93 in QAbstractItemView::activated(QModelIndex const&) () from /usr/lib/libQtGui.so.4
#91 0xb6d37240 in QAbstractItemView::mouseReleaseEvent(QMouseEvent*) () from /usr/lib/libQtGui.so.4
#92 0xb6d4d0bf in QListView::mouseReleaseEvent(QMouseEvent*) () from /usr/lib/libQtGui.so.4
#93 0xb68c1a62 in QWidget::event(QEvent*) () from /usr/lib/libQtGui.so.4
#94 0xb6bf7a83 in QFrame::event(QEvent*) () from /usr/lib/libQtGui.so.4
#95 0xb6c8e1bf in QAbstractScrollArea::viewportEvent(QEvent*) () from /usr/lib/libQtGui.so.4
#96 0xb6d38f3f in QAbstractItemView::viewportEvent(QEvent*) () from /usr/lib/libQtGui.so.4
#97 0xb6c90765 in ?? () from /usr/lib/libQtGui.so.4
#98 0xb65f8b3a in QCoreApplicationPrivate::sendThroughObjectEventFilters(QObject*, QEvent*) () from /usr/lib/libQtCore.so.4
#99 0xb68698da in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/libQtGui.so.4
#100 0xb6872111 in QApplication::notify(QObject*, QEvent*) () from /usr/lib/libQtGui.so.4
#101 0xb76508fd in KApplication::notify(QObject*, QEvent*) () from /usr/lib/libkdeui.so.5
#102 0xb65f9961 in QCoreApplication::notifyInternal(QObject*, QEvent*) () from /usr/lib/libQtCore.so.4
#103 0xb687139e in QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&) () from /usr/lib/libQtGui.so.4
#104 0xb68db716 in ?? () from /usr/lib/libQtGui.so.4
#105 0xb68daac5 in QApplication::x11ProcessEvent(_XEvent*) () from /usr/lib/libQtGui.so.4
#106 0xb690308a in ?? () from /usr/lib/libQtGui.so.4
#107 0xb55df9a8 in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0
#108 0xb55e3063 in ?? () from /usr/lib/libglib-2.0.so.0
#109 0xb55e3221 in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0
#110 0xb6623fb8 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
#111 0xb6902785 in ?? () from /usr/lib/libQtGui.so.4
#112 0xb65f801a in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
#113 0xb65f81da in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/libQtCore.so.4
#114 0xb65fa895 in QCoreApplication::exec() () from /usr/lib/libQtCore.so.4
#115 0xb6869777 in QApplication::exec() () from /usr/lib/libQtGui.so.4
#116 0xb7eef2c6 in kdemain () from /usr/lib/libkdeinit4_plasma.so
#117 0x08048782 in _start ()
Comment 1 Dario Andres 2009-01-28 11:42:30 UTC
Looks like a KIO job related crash.
As you can reproduce the crash at will, may you read http://techbase.kde.org/Development/Tutorials/Debugging/How_to_create_useful_crash_reports and post a complete backtrace here? Thanks :)
Comment 2 Ruchir Brahmbhatt 2009-01-29 08:03:04 UTC
I've already posted steps to reproduce and full back trace. What is missing?
Comment 3 David Faure 2009-01-29 11:58:38 UTC
He meant "installing debug symbols".
But the backtrace is clear enough to me: unwanted re-entrancy from KJob::exec() because it handled a mouse event, against expectations.

Is there any chance you can test a patch? I'll attach it.
Comment 4 David Faure 2009-01-29 11:59:27 UTC
Created attachment 30695 [details]
no gui handling from KJob::exec
Comment 5 David Faure 2009-01-29 12:05:11 UTC
SVN commit 918117 by dfaure:

Ouch, don't handle GUI events from KJob::exec, it leads to unexpected re-entrancy and crashes. Reviewed by Kevin.
Bug 182138 not actually re-tested though.
BUG: 182138


 M  +1 -1      kjob.cpp  


WebSVN link: http://websvn.kde.org/?view=rev&revision=918117
Comment 6 Ruchir Brahmbhatt 2009-01-29 12:10:26 UTC
I'm using rpm packages from opensuse factory repository and don't prefer to
compile from source but I can give it a try if it is not much time consuming.
Which package I have to recompile?
By the way it is reproducible in 4.2.0 final also. 
Comment 7 Dario Andres 2009-01-29 16:48:37 UTC
*** Bug 182226 has been marked as a duplicate of this bug. ***
Comment 8 David Faure 2009-01-29 23:00:05 UTC
In fact I committed the fix because it seems safe enough to me.
So the easiest way to test it is to wait for updated packages from the opensuse factory.
Comment 9 Dario Andres 2009-01-31 12:41:20 UTC
*** Bug 182296 has been marked as a duplicate of this bug. ***
Comment 10 Dario Andres 2009-02-24 23:16:08 UTC
*** Bug 185444 has been marked as a duplicate of this bug. ***
Comment 11 Mark Kretschmann 2009-03-08 07:59:09 UTC
*** Bug 186485 has been marked as a duplicate of this bug. ***