Summary: | plasma crash on posting via microblogger plasmoid | ||
---|---|---|---|
Product: | [Unmaintained] plasma4 | Reporter: | Rex Dieter <rdieter> |
Component: | general | Assignee: | Plasma Bugs List <plasma-bugs> |
Status: | RESOLVED FIXED | ||
Severity: | crash | CC: | aseigo, miwi, tuju |
Priority: | NOR | ||
Version: | unspecified | ||
Target Milestone: | --- | ||
Platform: | Fedora RPMs | ||
OS: | Linux | ||
Latest Commit: | Version Fixed In: | ||
Sentry Crash Report: |
Description
Rex Dieter
2009-08-03 05:34:33 UTC
that backtrace really doesn't make much sense to me on first look-over. the KIO job is signalling to TweetJob that it's done; TweetJob then calls setResult on itself with setResult(!job->error()) which causes KJob (which TweetJob is a subclass of) to emit the result signal and then it crashes ... in QObject while trying to emit the signal? can you double check your build before i go off and investigate this more? thanks. Is this twitter plasmoid or something else? Yeah, the twitter plasmoid was enhanced, added identi.ca support, renamed microblogger for kde-4.3.0 Oops, seems I was missing kdebase-workspace-debuginfo, I'll double-check the build.log's too, too make sure the builds were kosher. In that case I see this too. Thou I'm not that sure do I support fixing this, since pressing enter in microblogger's write-area, it is the easiest way to crash whole plasma after it's notification thingy (blue ball with i) hangs (pretty soon after running awhile) and needs restart. Here's a new kcrash report, with freshly built kdebase-workspace, kdeplasma-addons, and the full -debuginfo stack installed this time, Application: Plasma Workspace (kdeinit4), signal: Segmentation fault [Current thread is 1 (Thread 0x7fbf7d5d5820 (LWP 6001))] Thread 4 (Thread 0x7fbf552a0910 (LWP 6004)): #0 pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:261 #1 0x00007fbf7d032d7b in QWaitConditionPrivate::wait (time=<value optimized out>, this=<value optimized out>) at thread/qwaitcondition_unix.cpp:87 #2 QWaitCondition::wait (time=<value optimized out>, this=<value optimized out>) at thread/qwaitcondition_unix.cpp:159 #3 0x00007fbf7bc6ddac in QHostInfoAgent::run (this=0x17c9380) at kernel/qhostinfo.cpp:260 #4 0x00007fbf7d031cd5 in QThreadPrivate::start (arg=0x17c9380) at thread/qthread_unix.cpp:188 #5 0x00007fbf7cdc286a in start_thread (arg=<value optimized out>) at pthread_create.c:297 #6 0x00007fbf7990725d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112 #7 0x0000000000000000 in ?? () Thread 3 (Thread 0x7fbf4dd9f910 (LWP 6269)): #0 pthread_cond_timedwait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S:220 #1 0x00007fbf7d032ce2 in QWaitConditionPrivate::wait (time=<value optimized out>, this=<value optimized out>) at thread/qwaitcondition_unix.cpp:85 #2 QWaitCondition::wait (time=<value optimized out>, this=<value optimized out>) at thread/qwaitcondition_unix.cpp:159 #3 0x00007fbf7d028e22 in QThreadPoolThread::run (this=<value optimized out>) at concurrent/qthreadpool.cpp:140 #4 0x00007fbf7d031cd5 in QThreadPrivate::start (arg=0x1a553f0) at thread/qthread_unix.cpp:188 #5 0x00007fbf7cdc286a in start_thread (arg=<value optimized out>) at pthread_create.c:297 #6 0x00007fbf7990725d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112 #7 0x0000000000000000 in ?? () Thread 2 (Thread 0x7fbf4cf60910 (LWP 6278)): #0 pthread_cond_timedwait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S:220 #1 0x00007fbf7d032ce2 in QWaitConditionPrivate::wait (time=<value optimized out>, this=<value optimized out>) at thread/qwaitcondition_unix.cpp:85 #2 QWaitCondition::wait (time=<value optimized out>, this=<value optimized out>) at thread/qwaitcondition_unix.cpp:159 #3 0x00007fbf7d028e22 in QThreadPoolThread::run (this=<value optimized out>) at concurrent/qthreadpool.cpp:140 #4 0x00007fbf7d031cd5 in QThreadPrivate::start (arg=0x1cd2a80) at thread/qthread_unix.cpp:188 #5 0x00007fbf7cdc286a in start_thread (arg=<value optimized out>) at pthread_create.c:297 #6 0x00007fbf7990725d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112 #7 0x0000000000000000 in ?? () Thread 1 (Thread 0x7fbf7d5d5820 (LWP 6001)): [KCrash Handler] #5 0x00007fbf7d12dce4 in QMetaObject::activate (sender=0x21ab9f0, m=<value optimized out>, local_signal_index=3, argv=0x7fff1e5198b0) at kernel/qobject.cpp:3183 #6 0x00007fbf7ca2e322 in KJob::result (this=0x7fbf7cdad5a0, _t1=0x21ab9f0) at /usr/src/debug/kdelibs-4.3.0/x86_64-redhat-linux-gnu/kdecore/kjob.moc:188 #7 0x00007fbf7ca2e69f in KJob::emitResult (this=0x21ab9f0) at /usr/src/debug/kdelibs-4.3.0/kdecore/jobs/kjob.cpp:304 #8 0x00007fbf4ebda4e2 in TweetJob::result (this=0x21ab9f0, job=0x21ab580) at /usr/src/debug/kdeplasma-addons-4.3.0/dataengines/microblog/timelinesource.cpp:50 #9 0x00007fbf4ebda540 in TweetJob::qt_metacall (this=0x21ab9f0, _c=QMetaObject::InvokeMetaMethod, _id=<value optimized out>, _a=0x7fff1e519a40) at /usr/src/debug/kdeplasma-addons-4.3.0/x86_64-redhat-linux-gnu/dataengines/microblog/timelinesource.moc:68 #10 0x00007fbf7d12cfdc in QMetaObject::activate (sender=0x21ab580, from_signal_index=<value optimized out>, to_signal_index=<value optimized out>, argv=0x7) at kernel/qobject.cpp:3113 #11 0x00007fbf7ca2e322 in KJob::result (this=0x7fbf7cdad5a0, _t1=0x21ab580) at /usr/src/debug/kdelibs-4.3.0/x86_64-redhat-linux-gnu/kdecore/kjob.moc:188 #12 0x00007fbf7ca2e69f in KJob::emitResult (this=0x21ab580) at /usr/src/debug/kdelibs-4.3.0/kdecore/jobs/kjob.cpp:304 #13 0x00007fbf7bfeacd3 in KIO::SimpleJob::slotFinished (this=0x21ab580) at /usr/src/debug/kdelibs-4.3.0/kio/kio/job.cpp:477 #14 0x00007fbf7bfeb183 in KIO::TransferJob::slotFinished (this=0x21ab580) at /usr/src/debug/kdelibs-4.3.0/kio/kio/job.cpp:948 #15 0x00007fbf7bfe9aa1 in KIO::TransferJob::qt_metacall (this=0x21ab580, _c=QMetaObject::InvokeMetaMethod, _id=<value optimized out>, _a=0x7fff1e519e60) at /usr/src/debug/kdelibs-4.3.0/x86_64-redhat-linux-gnu/kio/jobclasses.moc:343 #16 0x00007fbf7d12cfdc in QMetaObject::activate (sender=0x118ceb0, from_signal_index=<value optimized out>, to_signal_index=<value optimized out>, argv=0x7) at kernel/qobject.cpp:3113 #17 0x00007fbf7c0ac261 in KIO::SlaveInterface::dispatch (this=0x118ceb0, _cmd=104, rawdata=@0x7fff1e51a0b0) at /usr/src/debug/kdelibs-4.3.0/kio/kio/slaveinterface.cpp:175 #18 0x00007fbf7c0a8c13 in KIO::SlaveInterface::dispatch (this=0x118ceb0) at /usr/src/debug/kdelibs-4.3.0/kio/kio/slaveinterface.cpp:91 #19 0x00007fbf7c09bcd2 in KIO::Slave::gotInput (this=0x118ceb0) at /usr/src/debug/kdelibs-4.3.0/kio/kio/slave.cpp:322 #20 0x00007fbf7c09dcdc in KIO::Slave::qt_metacall (this=0x118ceb0, _c=QMetaObject::InvokeMetaMethod, _id=<value optimized out>, _a=0x7fff1e51a220) at /usr/src/debug/kdelibs-4.3.0/x86_64-redhat-linux-gnu/kio/slave.moc:76 #21 0x00007fbf7d12cfdc in QMetaObject::activate (sender=0x1bb0f70, from_signal_index=<value optimized out>, to_signal_index=<value optimized out>, argv=0x7) at kernel/qobject.cpp:3113 #22 0x00007fbf7bfb88a7 in KIO::ConnectionPrivate::dequeue (this=0x1aba430) at /usr/src/debug/kdelibs-4.3.0/kio/kio/connection.cpp:82 #23 0x00007fbf7bfb89cd in KIO::Connection::qt_metacall (this=0x1bb0f70, _c=QMetaObject::InvokeMetaMethod, _id=<value optimized out>, _a=0x1ed5fd0) at /usr/src/debug/kdelibs-4.3.0/x86_64-redhat-linux-gnu/kio/connection.moc:73 #24 0x00007fbf7d127309 in QObject::event (this=0x1bb0f70, e=0x13dcc90) at kernel/qobject.cpp:1111 #25 0x00007fbf7a4cde2c in QApplicationPrivate::notify_helper (this=0xa6b7f0, receiver=0x1bb0f70, e=0x13dcc90) at kernel/qapplication.cpp:4056 #26 0x00007fbf7a4d4e5e in QApplication::notify (this=0xa62810, receiver=0x1bb0f70, e=0x13dcc90) at kernel/qapplication.cpp:4021 #27 0x00007fbf7b5ad546 in KApplication::notify (this=0xa62810, receiver=0x1bb0f70, event=0x13dcc90) at /usr/src/debug/kdelibs-4.3.0/kdeui/kernel/kapplication.cpp:302 #28 0x00007fbf7d117cbc in QCoreApplication::notifyInternal (this=0xa62810, receiver=0x1bb0f70, event=0x13dcc90) at kernel/qcoreapplication.cpp:610 #29 0x00007fbf7d1188c8 in QCoreApplication::sendEvent (event=<value optimized out>, receiver=<value optimized out>) at kernel/qcoreapplication.h:213 #30 QCoreApplicationPrivate::sendPostedEvents (event=<value optimized out>, receiver=<value optimized out>) at kernel/qcoreapplication.cpp:1247 #31 0x00007fbf7d140743 in QCoreApplication::sendPostedEvents () at kernel/qcoreapplication.h:218 #32 postEventSourceDispatch () at kernel/qeventdispatcher_glib.cpp:210 #33 0x00007fbf78f61abe in g_main_dispatch (context=<value optimized out>) at gmain.c:1824 #34 IA__g_main_context_dispatch (context=<value optimized out>) at gmain.c:2377 #35 0x00007fbf78f65278 in g_main_context_iterate (context=0xa6dd20, block=<value optimized out>, dispatch=<value optimized out>, self=<value optimized out>) at gmain.c:2455 #36 0x00007fbf78f653a0 in IA__g_main_context_iteration (context=0xa6dd20, may_block=1) at gmain.c:2518 #37 0x00007fbf7d1403b6 in QEventDispatcherGlib::processEvents (this=0x9d1e50, flags=<value optimized out>) at kernel/qeventdispatcher_glib.cpp:327 #38 0x00007fbf7a560b8e in QGuiEventDispatcherGlib::processEvents (this=0x7fbf7cdad5a0, flags=<value optimized out>) at kernel/qguieventdispatcher_glib.cpp:202 #39 0x00007fbf7d1165f2 in QEventLoop::processEvents (this=<value optimized out>, flags={i = 36}) at kernel/qeventloop.cpp:149 #40 0x00007fbf7d1169c4 in QEventLoop::exec (this=0x7fff1e51ab20, flags={i = 0}) at kernel/qeventloop.cpp:201 #41 0x00007fbf7d118b79 in QCoreApplication::exec () at kernel/qcoreapplication.cpp:888 #42 0x00007fbf6abb6dbf in kdemain (argc=<value optimized out>, argv=<value optimized out>) at /usr/src/debug/kdebase-workspace-4.3.0/plasma/shells/desktop/main.cpp:50 #43 0x00000000004068b3 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=0x409da5 "0") at /usr/src/debug/kdelibs-4.3.0/kinit/kinit.cpp:676 #44 0x00000000004075a0 in handle_launcher_request (sock=7, who=<value optimized out>) at /usr/src/debug/kdelibs-4.3.0/kinit/kinit.cpp:1168 #45 0x0000000000407a51 in handle_requests (waitForPid=0) at /usr/src/debug/kdelibs-4.3.0/kinit/kinit.cpp:1361 #46 0x00000000004086b2 in main (argc=2, argv=<value optimized out>, envp=<value optimized out>) at /usr/src/debug/kdelibs-4.3.0/kinit/kinit.cpp:1788 Unfortunately, to my unlearned padawan backtrace-reading eyes, this new one doesn't look much different. @Juha: "Thou I'm not that sure do I support fixing this, since pressing enter in microblogger's write-area, it is the easiest way to crash whole plasma after it's notification thingy" not fixing a bug because it exposes another bug doesn't make sense, doubly so in this case since one of the two reasons for this widget is to post updates (the other reason for it is to read other people's updates). @Rex: yes, the backtraces are the same. it still doesn't make sense to me as it's a signal calling into an object (signal/slot connections are broken when an object is deleted, so we know that at this point TweetJob is a valid object) and then never leaves that object and dies in QObject. aaah.. i think i've found it: KJob emits finished, then it emits result. KJob::finished is relayed by Plasma::Service::finished. microblogger then deletes the services and requests new ones (that seems a bit unnecessary, but i don't want to disturb things more than necessary here, i'll try and clean this up better for 4.4). when the services are deleted, the jobs associated with them are deleted (fair enough). but in this case, we're in the middle of executing code in the job (in between it emitting finished and result), ergo the crash. fix coming up. SVN commit 1006404 by aseigo: backport: this method gets called from a signal from the job which is part of the service, so deleteLater the service otherwise we delete the job in the middle of one of its methods! BUG:202364 M +6 -2 microblog.cpp WebSVN link: http://websvn.kde.org/?view=rev&revision=1006404 |