Bug 227010 - Plasma crashes randomly (CWP widget uses eventloop on a different thread)
Summary: Plasma crashes randomly (CWP widget uses eventloop on a different thread)
Status: RESOLVED DOWNSTREAM
Alias: None
Product: plasma4
Classification: Plasma
Component: general (show other bugs)
Version: unspecified
Platform: Ubuntu Linux
: NOR crash
Target Milestone: ---
Assignee: Plasma Bugs List
URL:
Keywords:
: 227643 227679 227787 230673 232142 232249 235830 (view as bug list)
Depends on:
Blocks:
 
Reported: 2010-02-15 15:57 UTC by Frank Sagurna
Modified: 2010-04-30 19:48 UTC (History)
8 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 Frank Sagurna 2010-02-15 15:57:53 UTC
Application: plasma-desktop (0.3)
KDE Platform Version: 4.4.00 (KDE 4.4.0)
Qt Version: 4.6.1
Operating System: Linux 2.6.31-20-generic x86_64
Distribution: Ubuntu 9.10

-- Information about the crash:
Plasma-desktop crashes sometimes, no special cause. This crash was when just browsing in Firefox, but does crash randomly.

 -- Backtrace:
Application: Plasma-Arbeitsfläche (kdeinit4), signal: Segmentation fault
pthread_cond_wait@@GLIBC_2.3.2 ()
    at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:261
	in ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S
The current source language is "auto; currently asm".
[Current thread is 1 (Thread 0x7f85f4d6d7f0 (LWP 24021))]

Thread 9 (Thread 0x7f85d00d1910 (LWP 24022)):
#0  0xffffffffff60017b in ?? ()
#1  0x00007f85d00d0c50 in ?? ()
#2  0x00007fffdc9ff782 in ?? ()
Backtrace stopped: previous frame identical to this frame (corrupt stack?)

Thread 8 (Thread 0x7f85cf086910 (LWP 24023)):
#0  pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:261
#1  0x00007f85e9fc3b86 in ?? () from /usr/lib/libQtWebKit.so.4
#2  0x00007f85e9fc3bc9 in ?? () from /usr/lib/libQtWebKit.so.4
#3  0x00007f85f2fc0a04 in start_thread (arg=<value optimized out>) at pthread_create.c:300
#4  0x00007f85f1d8580d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#5  0x0000000000000000 in ?? ()

Thread 7 (Thread 0x7f85cd5ff910 (LWP 24024)):
[KCrash Handler]
#5  0x00007f85f3358a69 in QMetaObject::addGuard (ptr=0x7f85cd5f8be0) at kernel/qobject.cpp:430
#6  0x00007f85f3e44ee7 in QPointer (this=0x1b48250, job=0x7f85c8021ef0) at /usr/include/qt4/QtCore/qpointer.h:60
#7  KIO::SchedulerPrivate::ProtocolInfo::findJobCoSlave (this=0x1b48250, job=0x7f85c8021ef0) at ../../kio/kio/scheduler.cpp:204
#8  KIO::SchedulerPrivate::cancelJob (this=0x1b48250, job=0x7f85c8021ef0) at ../../kio/kio/scheduler.cpp:510
#9  0x00007f85f3d96d41 in ~SimpleJob (this=0x7f85c8021ef0, __in_chrg=<value optimized out>) at ../../kio/kio/job.cpp:382
#10 0x00007f85f3d96e97 in ~TransferJob (this=0x0, __in_chrg=<value optimized out>) at ../../kio/kio/job.cpp:939
#11 0x00007f85f3353c9d in QObject::event (this=0x7f85c8021ef0, e=0x7f85c807dff0) at kernel/qobject.cpp:1231
#12 0x00007f85f24e2fac in QApplicationPrivate::notify_helper (this=0x1488990, receiver=0x7f85c8021ef0, e=0x7f85c807dff0) at kernel/qapplication.cpp:4298
#13 0x00007f85f24e959b in QApplication::notify (this=0x144c610, receiver=0x7f85c8021ef0, e=0x7f85c807dff0) at kernel/qapplication.cpp:4181
#14 0x00007f85f388bd16 in KApplication::notify (this=0x144c610, receiver=0x7f85c8021ef0, event=0x7f85c807dff0) at ../../kdeui/kernel/kapplication.cpp:302
#15 0x00007f85f3343f3c in QCoreApplication::notifyInternal (this=0x144c610, receiver=0x7f85c8021ef0, event=0x7f85c807dff0) at kernel/qcoreapplication.cpp:704
#16 0x00007f85f33466b7 in QCoreApplication::sendEvent (receiver=0x0, event_type=<value optimized out>, data=0x1cd1130) at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:215
#17 QCoreApplicationPrivate::sendPostedEvents (receiver=0x0, event_type=<value optimized out>, data=0x1cd1130) at kernel/qcoreapplication.cpp:1345
#18 0x00007f85f336d923 in QCoreApplication::sendPostedEvents (s=<value optimized out>) at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:220
#19 postEventSourceDispatch (s=<value optimized out>) at kernel/qeventdispatcher_glib.cpp:276
#20 0x00007f85ee54abce in g_main_context_dispatch () from /lib/libglib-2.0.so.0
#21 0x00007f85ee54e598 in ?? () from /lib/libglib-2.0.so.0
#22 0x00007f85ee54e6c0 in g_main_context_iteration () from /lib/libglib-2.0.so.0
#23 0x00007f85f336d463 in QEventDispatcherGlib::processEvents (this=0x1cd1f90, flags=<value optimized out>) at kernel/qeventdispatcher_glib.cpp:412
#24 0x00007f85f3342862 in QEventLoop::processEvents (this=<value optimized out>, flags=) at kernel/qeventloop.cpp:149
#25 0x00007f85f3342c3c in QEventLoop::exec (this=0x7f85cd5f9670, flags=) at kernel/qeventloop.cpp:201
#26 0x00007f85f3e3187c in KIO::NetAccess::enter_loop (this=0x7f85cd5f9710) at ../../kio/kio/netaccess.cpp:502
#27 0x00007f85f3e31ecf in KIO::NetAccess::synchronousRunInternal (this=0x7f85cd5f9710, job=0x7f85c802cc50, window=<value optimized out>, data=0x7f85cd5f9800, finalURL=0x0, metaData=0x0)
    at ../../kio/kio/netaccess.cpp:487
#28 0x00007f85f3e32681 in KIO::NetAccess::synchronousRun (job=0x7f85c802cc50, window=0x0, data=0x7f85cd5f9800, finalURL=0x0, metaData=<value optimized out>) at ../../kio/kio/netaccess.cpp:277
#29 0x00007f85d41adc95 in ?? () from /usr/lib/kde4/plasma_applet_cwp.so
#30 0x00007f85d41b786d in ?? () from /usr/lib/kde4/plasma_applet_cwp.so
#31 0x00007f85d41b9fb2 in ?? () from /usr/lib/kde4/plasma_applet_cwp.so
#32 0x00007f85f324f745 in QThreadPrivate::start (arg=0x1cd0d90) at thread/qthread_unix.cpp:248
#33 0x00007f85f2fc0a04 in start_thread (arg=<value optimized out>) at pthread_create.c:300
#34 0x00007f85f1d8580d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#35 0x0000000000000000 in ?? ()

Thread 6 (Thread 0x7f85c5284910 (LWP 24028)):
#0  pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:261
#1  0x00007f85e6645396 in QTWTF::TCMalloc_PageHeap::scavengerThread (this=0x7f85e6923220) at ../3rdparty/javascriptcore/JavaScriptCore/wtf/FastMalloc.cpp:2304
#2  0x00007f85e66453d9 in QTWTF::TCMalloc_PageHeap::runScavengerThread (context=0x7f85e69312ec) at ../3rdparty/javascriptcore/JavaScriptCore/wtf/FastMalloc.cpp:1438
#3  0x00007f85f2fc0a04 in start_thread (arg=<value optimized out>) at pthread_create.c:300
#4  0x00007f85f1d8580d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#5  0x0000000000000000 in ?? ()
The current source language is "auto; currently c".

Thread 5 (Thread 0x7f85c73db910 (LWP 14201)):
#0  pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:261
#1  0x00007f85f32506fb in QWaitConditionPrivate::wait (this=<value optimized out>, mutex=0x1e3b570, time=18446744073709551615) at thread/qwaitcondition_unix.cpp:87
#2  QWaitCondition::wait (this=<value optimized out>, mutex=0x1e3b570, time=18446744073709551615) at thread/qwaitcondition_unix.cpp:159
#3  0x00007f85e9794096 in ThreadWeaver::WeaverImpl::blockThreadUntilJobsAreBeingAssigned (this=0x1e3b000, th=0x24ea2d0) at ../../../threadweaver/Weaver/WeaverImpl.cpp:365
#4  0x00007f85e979674b in ThreadWeaver::WorkingHardState::applyForWork (this=0x1e4b5f0, th=0x24ea2d0) at ../../../threadweaver/Weaver/WorkingHardState.cpp:71
#5  0x00007f85e9794bff in ThreadWeaver::ThreadRunHelper::run (this=0x7f85c73dafb0, parent=0x1e3b000, th=0x24ea2d0) at ../../../threadweaver/Weaver/Thread.cpp:87
#6  0x00007f85e9795058 in ThreadWeaver::Thread::run (this=0x24ea2d0) at ../../../threadweaver/Weaver/Thread.cpp:142
#7  0x00007f85f324f745 in QThreadPrivate::start (arg=0x24ea2d0) at thread/qthread_unix.cpp:248
#8  0x00007f85f2fc0a04 in start_thread (arg=<value optimized out>) at pthread_create.c:300
#9  0x00007f85f1d8580d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#10 0x0000000000000000 in ?? ()
The current source language is "auto; currently asm".

Thread 4 (Thread 0x7f85bba16910 (LWP 14202)):
#0  pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:261
#1  0x00007f85f32506fb in QWaitConditionPrivate::wait (this=<value optimized out>, mutex=0x1e3b570, time=18446744073709551615) at thread/qwaitcondition_unix.cpp:87
#2  QWaitCondition::wait (this=<value optimized out>, mutex=0x1e3b570, time=18446744073709551615) at thread/qwaitcondition_unix.cpp:159
#3  0x00007f85e9794096 in ThreadWeaver::WeaverImpl::blockThreadUntilJobsAreBeingAssigned (this=0x1e3b000, th=0x7f85c803a700) at ../../../threadweaver/Weaver/WeaverImpl.cpp:365
#4  0x00007f85e979674b in ThreadWeaver::WorkingHardState::applyForWork (this=0x1e4b5f0, th=0x7f85c803a700) at ../../../threadweaver/Weaver/WorkingHardState.cpp:71
#5  0x00007f85e9794bff in ThreadWeaver::ThreadRunHelper::run (this=0x7f85bba15fb0, parent=0x1e3b000, th=0x7f85c803a700) at ../../../threadweaver/Weaver/Thread.cpp:87
#6  0x00007f85e9795058 in ThreadWeaver::Thread::run (this=0x7f85c803a700) at ../../../threadweaver/Weaver/Thread.cpp:142
#7  0x00007f85f324f745 in QThreadPrivate::start (arg=0x7f85c803a700) at thread/qthread_unix.cpp:248
#8  0x00007f85f2fc0a04 in start_thread (arg=<value optimized out>) at pthread_create.c:300
#9  0x00007f85f1d8580d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#10 0x0000000000000000 in ?? ()

Thread 3 (Thread 0x7f85b670f910 (LWP 14203)):
#0  pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:261
#1  0x00007f85f32506fb in QWaitConditionPrivate::wait (this=<value optimized out>, mutex=0x1e3b570, time=18446744073709551615) at thread/qwaitcondition_unix.cpp:87
#2  QWaitCondition::wait (this=<value optimized out>, mutex=0x1e3b570, time=18446744073709551615) at thread/qwaitcondition_unix.cpp:159
#3  0x00007f85e9794096 in ThreadWeaver::WeaverImpl::blockThreadUntilJobsAreBeingAssigned (this=0x1e3b000, th=0x7f85c801d8f0) at ../../../threadweaver/Weaver/WeaverImpl.cpp:365
#4  0x00007f85e979674b in ThreadWeaver::WorkingHardState::applyForWork (this=0x1e4b5f0, th=0x7f85c801d8f0) at ../../../threadweaver/Weaver/WorkingHardState.cpp:71
#5  0x00007f85e9794bff in ThreadWeaver::ThreadRunHelper::run (this=0x7f85b670efb0, parent=0x1e3b000, th=0x7f85c801d8f0) at ../../../threadweaver/Weaver/Thread.cpp:87
#6  0x00007f85e9795058 in ThreadWeaver::Thread::run (this=0x7f85c801d8f0) at ../../../threadweaver/Weaver/Thread.cpp:142
#7  0x00007f85f324f745 in QThreadPrivate::start (arg=0x7f85c801d8f0) at thread/qthread_unix.cpp:248
#8  0x00007f85f2fc0a04 in start_thread (arg=<value optimized out>) at pthread_create.c:300
#9  0x00007f85f1d8580d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#10 0x0000000000000000 in ?? ()

Thread 2 (Thread 0x7f85b5f0e910 (LWP 14204)):
#0  pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:261
#1  0x00007f85f32506fb in QWaitConditionPrivate::wait (this=<value optimized out>, mutex=0x1e3b570, time=18446744073709551615) at thread/qwaitcondition_unix.cpp:87
#2  QWaitCondition::wait (this=<value optimized out>, mutex=0x1e3b570, time=18446744073709551615) at thread/qwaitcondition_unix.cpp:159
#3  0x00007f85e9794096 in ThreadWeaver::WeaverImpl::blockThreadUntilJobsAreBeingAssigned (this=0x1e3b000, th=0x21ecd40) at ../../../threadweaver/Weaver/WeaverImpl.cpp:365
#4  0x00007f85e979674b in ThreadWeaver::WorkingHardState::applyForWork (this=0x1e4b5f0, th=0x21ecd40) at ../../../threadweaver/Weaver/WorkingHardState.cpp:71
#5  0x00007f85e9794bff in ThreadWeaver::ThreadRunHelper::run (this=0x7f85b5f0dfb0, parent=0x1e3b000, th=0x21ecd40) at ../../../threadweaver/Weaver/Thread.cpp:87
#6  0x00007f85e9795058 in ThreadWeaver::Thread::run (this=0x21ecd40) at ../../../threadweaver/Weaver/Thread.cpp:142
#7  0x00007f85f324f745 in QThreadPrivate::start (arg=0x21ecd40) at thread/qthread_unix.cpp:248
#8  0x00007f85f2fc0a04 in start_thread (arg=<value optimized out>) at pthread_create.c:300
#9  0x00007f85f1d8580d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#10 0x0000000000000000 in ?? ()

Thread 1 (Thread 0x7f85f4d6d7f0 (LWP 24021)):
#0  pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:261
#1  0x00007f85f324ee73 in QMutexPrivate::wait (this=0x1499f20, timeout=-1) at thread/qmutex_unix.cpp:84
#2  0x00007f85f324a9f5 in QMutex::lock (this=0x14bf380) at thread/qmutex.cpp:205
#3  0x00007f85f3358ba8 in QMutexLocker::relock (ptr=0x7fffdc8c49a0) at ../../include/QtCore/../../src/corelib/thread/qmutex.h:120
#4  QMutexLocker (ptr=0x7fffdc8c49a0) at ../../include/QtCore/../../src/corelib/thread/qmutex.h:102
#5  QMetaObject::addGuard (ptr=0x7fffdc8c49a0) at kernel/qobject.cpp:429
#6  0x00007f85f3d69efb in QPointer (this=0x2d5da70) at /usr/include/qt4/QtCore/qpointer.h:60
#7  KIO::SocketConnectionBackend::socketReadyRead (this=0x2d5da70) at ../../kio/kio/connection.cpp:358
#8  0x00007f85f3d6a140 in KIO::SocketConnectionBackend::qt_metacall (this=0x2d5da70, _c=QMetaObject::InvokeMetaMethod, _id=<value optimized out>, _a=<value optimized out>) at ./connection_p.moc:158
#9  0x00007f85f3356d3f in QMetaObject::activate (sender=0x25416d0, m=<value optimized out>, local_signal_index=<value optimized out>, argv=0xffffffffffffffff) at kernel/qobject.cpp:3275
#10 0x00007f85f1a22f1f in QAbstractSocketPrivate::canReadNotification (this=0x2e01730) at socket/qabstractsocket.cpp:626
#11 0x00007f85f1a127a1 in QReadNotifier::event (this=<value optimized out>, e=0x80) at socket/qnativesocketengine.cpp:1089
#12 0x00007f85f24e2fac in QApplicationPrivate::notify_helper (this=0x1488990, receiver=0x26f2270, e=0x7fffdc8c5060) at kernel/qapplication.cpp:4298
#13 0x00007f85f24e959b in QApplication::notify (this=0x144c610, receiver=0x26f2270, e=0x7fffdc8c5060) at kernel/qapplication.cpp:4181
#14 0x00007f85f388bd16 in KApplication::notify (this=0x144c610, receiver=0x26f2270, event=0x7fffdc8c5060) at ../../kdeui/kernel/kapplication.cpp:302
#15 0x00007f85f3343f3c in QCoreApplication::notifyInternal (this=0x144c610, receiver=0x26f2270, event=0x7fffdc8c5060) at kernel/qcoreapplication.cpp:704
#16 0x00007f85f336d81a in QCoreApplication::sendEvent (source=0x148beb0) at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:215
#17 socketNotifierSourceDispatch (source=0x148beb0) at kernel/qeventdispatcher_glib.cpp:110
#18 0x00007f85ee54abce in g_main_context_dispatch () from /lib/libglib-2.0.so.0
#19 0x00007f85ee54e598 in ?? () from /lib/libglib-2.0.so.0
#20 0x00007f85ee54e6c0 in g_main_context_iteration () from /lib/libglib-2.0.so.0
#21 0x00007f85f336d463 in QEventDispatcherGlib::processEvents (this=0x14011c0, flags=<value optimized out>) at kernel/qeventdispatcher_glib.cpp:412
#22 0x00007f85f25927ee in QGuiEventDispatcherGlib::processEvents (this=0x1499f6c, flags=<value optimized out>) at kernel/qguieventdispatcher_glib.cpp:204
#23 0x00007f85f3342862 in QEventLoop::processEvents (this=<value optimized out>, flags=) at kernel/qeventloop.cpp:149
#24 0x00007f85f3342c3c in QEventLoop::exec (this=0x7fffdc8c52c0, flags=) at kernel/qeventloop.cpp:201
#25 0x00007f85f334697b in QCoreApplication::exec () at kernel/qcoreapplication.cpp:981
#26 0x00007f85e6bd60a2 in kdemain (argc=<value optimized out>, argv=<value optimized out>) at ../../../../plasma/desktop/shell/main.cpp:112
#27 0x0000000000406fb8 in launch (argc=1, _name=<value optimized out>, args=<value optimized out>, cwd=<value optimized out>, envc=0, envs=<value optimized out>, reset_env=false, tty=0x0, 
    avoid_loops=false, startup_id_str=0x40a499 "0") at ../../kinit/kinit.cpp:717
#28 0x0000000000407c70 in handle_launcher_request (sock=9, who=<value optimized out>) at ../../kinit/kinit.cpp:1209
#29 0x0000000000408121 in handle_requests (waitForPid=0) at ../../kinit/kinit.cpp:1402
#30 0x0000000000408df2 in main (argc=4, argv=<value optimized out>, envp=<value optimized out>) at ../../kinit/kinit.cpp:1841

Reported using DrKonqi
Comment 1 Dario Andres 2010-02-15 16:14:50 UTC
The crash seems to be related to the CWP widget.
- Does the random crashes stop if you remove it from your Plasma Desktop ?
- Did you recompiled it / reinstalled it after updating to KDE SC 4.4. ?
Regards
Comment 2 Frank Sagurna 2010-02-17 12:07:54 UTC
Ok, i now did remove the CWP widget and will report if the crashes still occur.
Anyway should plasma-desktop really crash if a plasmoid crashes? I think it would be better if plasma-desktop catches the crash and stays alive.
Comment 3 Dario Andres 2010-02-17 13:00:45 UTC
That's a another big issue: bug 199754. Regards
Comment 4 Dario Andres 2010-02-26 13:44:46 UTC
Reporter on bug 227787 confirmed that if CWP is not used, Plasma doesn't crash with this backtrace.

Looking at the code, it is using synchronus calls using KIO, (on a different thread) and that is not allowed by KIO (it will generate random crashes)

Please report to the CWP author (kde-look.org page)

Regards
Comment 5 Dario Andres 2010-02-26 13:45:01 UTC
*** Bug 227787 has been marked as a duplicate of this bug. ***
Comment 6 Dario Andres 2010-02-26 13:45:12 UTC
*** Bug 227679 has been marked as a duplicate of this bug. ***
Comment 7 Dario Andres 2010-02-26 13:45:18 UTC
*** Bug 227643 has been marked as a duplicate of this bug. ***
Comment 8 Dario Andres 2010-03-14 13:24:22 UTC
*** Bug 230673 has been marked as a duplicate of this bug. ***
Comment 9 Frank Sagurna 2010-03-14 13:36:04 UTC
I contacted the author of CWP, and he sais:
"Which version are you using?
>= cwp-0.9.14 should make asynchronous downloads from the gui thread, which should be fine."

I am on Ubuntu Lucid now with cwp-0.9.18 and no more crashes from cwp. So for everyone having this crash can update to newer cwp and should be solved for them.
Comment 10 Dario Andres 2010-03-25 22:22:24 UTC
*** Bug 232142 has been marked as a duplicate of this bug. ***
Comment 11 Dario Andres 2010-03-26 20:17:30 UTC
*** Bug 232249 has been marked as a duplicate of this bug. ***
Comment 12 Beat Wolf 2010-04-30 19:48:55 UTC
*** Bug 235830 has been marked as a duplicate of this bug. ***