Bug 204844 - (steps) Plasma crashes while trying to trash folder in a lower lovel, with insufficent permissions (KDialogQueue::Private::slotShowQueuedDialog)
Summary: (steps) Plasma crashes while trying to trash folder in a lower lovel, with in...
Status: RESOLVED FIXED
Alias: None
Product: plasma4
Classification: Plasma
Component: widget-folderview (show other bugs)
Version: unspecified
Platform: Unlisted Binaries Linux
: NOR crash
Target Milestone: ---
Assignee: Plasma Bugs List
URL:
Keywords: reproducible, testcase
Depends on:
Blocks:
 
Reported: 2009-08-23 11:11 UTC by Volker Lanz
Modified: 2009-12-12 18:13 UTC (History)
2 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 Volker Lanz 2009-08-23 11:11:27 UTC
Application that crashed: plasma-desktop
Version of the application: 0.3
KDE Version: 4.3.00 (KDE 4.3.0)
Qt Version: 4.5.2
Operating System: Linux 2.6.28-11-generic x86_64
Distribution: Ubuntu 9.04

What I was doing when the application crashed:
In folder view, while trying to trash a folder (via context menu) that has permissions set to 555, plasma crashed. The folder was one level below what the folder view has set as its dir.

 -- Backtrace:
Application: Plasma Workspace (plasma-desktop), signal: Segmentation fault
[Current thread is 0 (LWP 26404)]

Thread 3 (Thread 0x7f62d0136950 (LWP 26405)):
#0  pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:261
#1  0x00007f62ea9b3d19 in QWaitCondition::wait (this=0x2c00410, mutex=0x2c00408, time=18446744073709551615) at thread/qwaitcondition_unix.cpp:87
#2  0x00007f62edf0c81c in QHostInfoAgent::run (this=0x2c003f0) at kernel/qhostinfo.cpp:260
#3  0x00007f62ea9b2d35 in QThreadPrivate::start (arg=0x2c003f0) at thread/qthread_unix.cpp:188
#4  0x00007f62e71483ba in start_thread (arg=<value optimized out>) at pthread_create.c:297
#5  0x00007f62e9f1dfcd in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#6  0x0000000000000000 in ?? ()

Thread 2 (Thread 0x7f62ce243950 (LWP 26406)):
#0  pthread_cond_timedwait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S:217
#1  0x00007f62ea9b2785 in thread_sleep (ti=0x7f62ce242f70) at thread/qthread_unix.cpp:297
#2  0x00007f62ea9b28ee in QThread::msleep (msecs=50) at thread/qthread_unix.cpp:323
#3  0x00007f62d0dcb0ee in ?? () from /usr/lib/kde4/plasma_applet_cwp.so
#4  0x00007f62ea9b2d35 in QThreadPrivate::start (arg=0x2df5860) at thread/qthread_unix.cpp:188
#5  0x00007f62e71483ba in start_thread (arg=<value optimized out>) at pthread_create.c:297
#6  0x00007f62e9f1dfcd in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#7  0x0000000000000000 in ?? ()

Thread 1 (Thread 0x7f62ef4ff790 (LWP 26404)):
[KCrash Handler]
#5  0x00000000040f226a in ?? ()
#6  0x00007f62ed7bc566 in KDialogQueue::Private::slotShowQueuedDialog (this=0x3ee3430) at /build/buildd/kde4libs-4.3.0/kdeui/dialogs/kdialog.cpp:1057
#7  0x00007f62ed7bc5fd in KDialogQueue::qt_metacall (this=0x2a7bbf0, _c=QMetaObject::InvokeMetaMethod, _id=68100672, _a=<value optimized out>)
    at /build/buildd/kde4libs-4.3.0/obj-x86_64-linux-gnu/kdeui/kdialogqueue_p.moc:66
#8  0x00007f62eaab1ea2 in QMetaObject::activate (sender=0x3fed720, from_signal_index=<value optimized out>, to_signal_index=4, argv=0x4b1ada0) at kernel/qobject.cpp:3113
#9  0x00007f62eaab714f in QSingleShotTimer::timerEvent (this=0x3fed720) at kernel/qtimer.cpp:298
#10 0x00007f62eaaac263 in QObject::event (this=0x3fed720, e=0x7f62e9f74590) at kernel/qobject.cpp:1075
#11 0x00007f62eb1a5f4d in QApplicationPrivate::notify_helper (this=0x23464a0, receiver=0x3fed720, e=0x7ffff7648990) at kernel/qapplication.cpp:4056
#12 0x00007f62eb1ae18a in QApplication::notify (this=0x232ec30, receiver=0x3fed720, e=0x7ffff7648990) at kernel/qapplication.cpp:4021
#13 0x00007f62ed84971b in KApplication::notify (this=0x232ec30, receiver=0x3fed720, event=0x7ffff7648990) at /build/buildd/kde4libs-4.3.0/kdeui/kernel/kapplication.cpp:302
#14 0x00007f62eaa9c6ac in QCoreApplication::notifyInternal (this=0x232ec30, receiver=0x3fed720, event=0x7ffff7648990) at kernel/qcoreapplication.cpp:610
#15 0x00007f62eaac9516 in QTimerInfoList::activateTimers (this=0x2349c60) at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:213
#16 0x00007f62eaac5b2d in timerSourceDispatch (source=<value optimized out>) at kernel/qeventdispatcher_glib.cpp:165
#17 0x00007f62e551820a in IA__g_main_context_dispatch (context=0x2348d30) at /build/buildd/glib2.0-2.20.1/glib/gmain.c:1814
#18 0x00007f62e551b8e0 in g_main_context_iterate (context=0x2348d30, block=1, dispatch=1, self=<value optimized out>) at /build/buildd/glib2.0-2.20.1/glib/gmain.c:2448
#19 0x00007f62e551ba7c in IA__g_main_context_iteration (context=0x2348d30, may_block=1) at /build/buildd/glib2.0-2.20.1/glib/gmain.c:2511
#20 0x00007f62eaac5a8f in QEventDispatcherGlib::processEvents (this=0x2316e30, flags=<value optimized out>) at kernel/qeventdispatcher_glib.cpp:327
#21 0x00007f62eb23ebdf in QGuiEventDispatcherGlib::processEvents (this=0x4ae7ec0, flags=<value optimized out>) at kernel/qguieventdispatcher_glib.cpp:202
#22 0x00007f62eaa9af42 in QEventLoop::processEvents (this=<value optimized out>, flags={i = -144405504}) at kernel/qeventloop.cpp:149
#23 0x00007f62eaa9b314 in QEventLoop::exec (this=0x7ffff7648c40, flags={i = -144405424}) at kernel/qeventloop.cpp:201
#24 0x00007f62eaa9d5e4 in QCoreApplication::exec () at kernel/qcoreapplication.cpp:888
#25 0x00007f62ef1e01eb in kdemain (argc=1, argv=0x7ffff7648f48) at /build/buildd/kdebase-workspace-4.3.0/plasma/shells/desktop/main.cpp:50
#26 0x00007f62e9e565a6 in __libc_start_main (main=0x400890 <main>, argc=1, ubp_av=0x7ffff7648f48, init=0x4008c0 <__libc_csu_init>, fini=<value optimized out>, rtld_fini=<value optimized out>, 
    stack_end=0x7ffff7648f38) at libc-start.c:220
#27 0x00000000004007c9 in _start () at ../sysdeps/x86_64/elf/start.S:113

Reported using DrKonqi
Comment 1 Dario Andres 2009-08-23 15:51:44 UTC
Thanks for the data

Here using:

Qt: 4.5.2 (KDE-Qt git commit 5b7a2eb42acfdea07c6075556cb43e2c95852145
        Date:   Tue Jul 28 14:10:47 2009 -0300)
KDE: 4.3.64 (KDE 4.3.64 (KDE 4.4 >= 20090812))
kdelibs svn rev. 1013119 / kdebase svn rev. 1013119
on ArchLinux i686 - Kernel 2.6.30.4

I can reproduce the crash.

- Steps:

- Add a FolderView to the Desktop
The FolderView should point to "/A/B"
The folder "B" should have a link/desktopfile to the folder "A"
There should be a folder "/A/C" , where "C" has 555 permissions

- On the folderview showing "/A/B", hover the link/desktopfile that links to the folder "A".
The folder "A" should be shown in a PopupView
- On the PopupView, search for the "C" folder and select it.
- Right click on the "C" folder and select "Move to Trash"

The dialog about the invalid permissions to move to trash should appear behind the folderview (and/or corrupted). Some seconds later Plasma crashes

- Backtrace:

Application: Plasma Workspace (kdeinit4), signal: Segmentation fault
[Current thread is 0 (LWP 4405)]

Thread 2 (Thread 0xa8a5ab70 (LWP 4411)):
#0  0xb7f67424 in __kernel_vsyscall ()
#1  0xb7ca1bc5 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/libpthread.so.0
#2  0xb7d346c3 in QWaitConditionPrivate::wait (this=0x8bdfdf0, time=4294967295) at thread/qwaitcondition_unix.cpp:87
#3  0xb7d344c7 in QWaitCondition::wait (this=0x8bd8320, mutex=0x8bd831c, time=4294967295) at thread/qwaitcondition_unix.cpp:159
#4  0xb7571576 in QHostInfoAgent::run (this=0x8bd8310) at kernel/qhostinfo.cpp:260
#5  0xb7d33266 in QThreadPrivate::start (arg=0x8bd8310) at thread/qthread_unix.cpp:188
#6  0xb7c9d68c in start_thread () from /lib/libpthread.so.0
#7  0xb62d1e2e in clone () from /lib/libc.so.6

Thread 1 (Thread 0xb5c7bb00 (LWP 4405)):
[KCrash Handler]
#6  0x00000003 in ?? ()
#7  0xb71f39bf in KDialogQueue::Private::slotShowQueuedDialog (this=0x979b5e8) at /home/kde-devel/kde/src/KDE/kdelibs/kdeui/dialogs/kdialog.cpp:1057
#8  0xb71f3a54 in KDialogQueue::qt_metacall (this=0x979b580, _c=QMetaObject::InvokeMetaMethod, _id=4, _a=0xbfa8df38) at /home/kde-devel/kde/build/KDE/kdelibs/kdeui/kdialogqueue_p.moc:66
#9  0xb7e539ca in QMetaObject::activate (sender=0x95332c0, from_signal_index=4, to_signal_index=4, argv=0x0) at kernel/qobject.cpp:3112
#10 0xb7e53d42 in QMetaObject::activate (sender=0x95332c0, m=0xb7f61ae4, local_signal_index=0, argv=0x0) at kernel/qobject.cpp:3186
#11 0xb7e5ca1f in QSingleShotTimer::timeout (this=0x95332c0) at .moc/debug-shared/qtimer.moc:76
#12 0xb7e5c904 in QSingleShotTimer::timerEvent (this=0x95332c0) at kernel/qtimer.cpp:298
#13 0xb7e4fbe2 in QObject::event (this=0x95332c0, e=0xbfa8e4b4) at kernel/qobject.cpp:1074
#14 0xb65f02db in QApplicationPrivate::notify_helper (this=0x892d3b8, receiver=0x95332c0, e=0xbfa8e4b4) at kernel/qapplication.cpp:4056
#15 0xb65ee73c in QApplication::notify (this=0x890e360, receiver=0x95332c0, e=0xbfa8e4b4) at kernel/qapplication.cpp:3603
#16 0xb7295a9a in KApplication::notify (this=0x890e360, receiver=0x95332c0, event=0xbfa8e4b4) at /home/kde-devel/kde/src/KDE/kdelibs/kdeui/kernel/kapplication.cpp:302
#17 0xb7e3a1c1 in QCoreApplication::notifyInternal (this=0x890e360, receiver=0x95332c0, event=0xbfa8e4b4) at kernel/qcoreapplication.cpp:610
#18 0xb7e3db87 in QCoreApplication::sendEvent (receiver=0x95332c0, event=0xbfa8e4b4) at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:213
#19 0xb7e71672 in QTimerInfoList::activateTimers (this=0x892fc7c) at kernel/qeventdispatcher_unix.cpp:572
#20 0xb7e6db17 in timerSourceDispatch (source=0x892fc48) at kernel/qeventdispatcher_glib.cpp:165
#21 0xb6167d98 in g_main_context_dispatch () from /usr/lib/libglib-2.0.so.0
#22 0xb616b3e0 in g_main_context_iterate () from /usr/lib/libglib-2.0.so.0
#23 0xb616b513 in g_main_context_iteration () from /usr/lib/libglib-2.0.so.0
#24 0xb7e6ea5a in QEventDispatcherGlib::processEvents (this=0x892cf50, flags={i = 36}) at kernel/qeventdispatcher_glib.cpp:327
#25 0xb66a1f3e in QGuiEventDispatcherGlib::processEvents (this=0x892cf50, flags={i = 36}) at kernel/qguieventdispatcher_glib.cpp:202
#26 0xb7e3779f in QEventLoop::processEvents (this=0xbfa8e75c, flags={i = 36}) at kernel/qeventloop.cpp:149
#27 0xb7e378e4 in QEventLoop::exec (this=0xbfa8e75c, flags={i = 0}) at kernel/qeventloop.cpp:201
#28 0xb7e3a89d in QCoreApplication::exec () at kernel/qcoreapplication.cpp:888
#29 0xb65ee3f8 in QApplication::exec () at kernel/qapplication.cpp:3525
#30 0xb41847f4 in kdemain (argc=1, argv=0x88a1508) at /home/kde-devel/kde/src/KDE/kdebase/workspace/plasma/shells/desktop/main.cpp:112
#31 0x0804e0a9 in launch (argc=<value optimized out>, _name=<value optimized out>, args=<value optimized out>, cwd=0x0, envc=0, envs=0x88fe847 "", reset_env=false, tty=0x0, avoid_loops=false, 
    startup_id_str=0x8051233 "0") at /home/kde-devel/kde/src/KDE/kdelibs/kinit/kinit.cpp:705
#32 0x0804ec1d in handle_launcher_request (sock=<value optimized out>, who=<value optimized out>) at /home/kde-devel/kde/src/KDE/kdelibs/kinit/kinit.cpp:1197
#33 0x0804f0b4 in handle_requests (waitForPid=<value optimized out>) at /home/kde-devel/kde/src/KDE/kdelibs/kinit/kinit.cpp:1390
#34 0x0804f95f in main (argc=4, argv=0xbfa8f2a4, envp=0xbfa8f2b8) at /home/kde-devel/kde/src/KDE/kdelibs/kinit/kinit.cpp:1825
Comment 2 Fredrik Höglund 2009-12-12 18:13:39 UTC
SVN commit 1061675 by fredrik:

Pass QApplication::desktop() as the parent widget to KonqOperations
instead of view() or 'this'.

This fixes a crash that can occur if the parent widget is deleted while
KonqOperations is showing a dialog box.

It also fixes a potential crash if view() returns 0.

BUG: 204844
BUG: 206343


 M  +7 -6      folderview.cpp  
 M  +5 -5      popupview.cpp  


WebSVN link: http://websvn.kde.org/?view=rev&revision=1061675