Bug 269648

Summary: kded4 hangs on exit when cifs filesystem zombie exists
Product: [Frameworks and Libraries] solid Reporter: Wolfgang Rohdewald <wolfgang>
Component: libsolid-fstabAssignee: Mario Bensi <nef>
Status: RESOLVED DUPLICATE    
Severity: normal CC: afiestas, sven.burmeister
Priority: NOR    
Version: unspecified   
Target Milestone: 4.11   
Platform: Ubuntu   
OS: Linux   
Latest Commit: Version Fixed In:

Description Wolfgang Rohdewald 2011-03-28 23:15:12 UTC
Version:           4.6 (using KDE 4.6.1) 
OS:                Linux

I had a cifs filesystem mounted pointing to a virtualbox guest which was killed. kded4 hangs, eating 100% cpu. strace -p shows an endless list of 

Process 5717 attached with 3 threads - interrupt to quit
[pid  5720] select(7, [6], NULL, NULL, NULL <unfinished ...>
[pid  5766] poll([{fd=17, events=POLLIN}, {fd=16, events=POLLIN}], 2, -1 <unfinished ...>
[pid  5717] futex(0x26e335c, FUTEX_WAIT_PRIVATE, 1, NULL <unfinished ...>
[pid  5766] <... poll resumed> )        = 1 ([{fd=16, revents=POLLIN}])
[pid  5766] poll([{fd=17, events=POLLIN}, {fd=16, events=POLLIN}], 2, -1) = 1 ([{fd=16, revents=POLLIN}])
[pid  5766] poll([{fd=17, events=POLLIN}, {fd=16, events=POLLIN}], 2, -1) = 1 ([{fd=16, revents=POLLIN}])
[pid  5766] poll([{fd=17, events=POLLIN}, {fd=16, events=POLLIN}], 2, -1) = 1 ([{fd=16, revents=POLLIN}])

attaching gdb shows this backtrace - none of the breakpoints ever triggers:
(gdb) info break
Num     Type           Disp Enb Address            What
1       breakpoint     keep y   0x00007f03050cfe60 in QThread::wait(unsigned long) at thread/qthread_unix.cpp:639
2       breakpoint     keep y   0x00007f03050d07b0 in QWaitCondition::wait(QReadWriteLock*, unsigned long) at thread/qwaitcondition_unix.cpp:168
3       breakpoint     keep y   0x00007f03050d0c70 in QWaitCondition::wait(QMutex*, unsigned long) at thread/qwaitcondition_unix.cpp:148
(gdb) bt
#0  pthread_cond_wait@@GLIBC_2.3.2 () at ../nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:162
#1  0x00007f03050d0e3b in wait (this=<value optimized out>, mutex=0x27dfd60, time=18446744073709551615) at thread/qwaitcondition_unix.cpp:88
#2  QWaitCondition::wait (this=<value optimized out>, mutex=0x27dfd60, time=18446744073709551615) at thread/qwaitcondition_unix.cpp:160
#3  0x00007f03050cfedc in QThread::wait (this=<value optimized out>, time=18446744073709551615) at thread/qthread_unix.cpp:652
#4  0x00007f0305194ee0 in QFileSystemWatcher::~QFileSystemWatcher (this=0x27c7550, __in_chrg=<value optimized out>) at io/qfilesystemwatcher.cpp:440
#5  0x00007f03051d5d5f in QObjectPrivate::deleteChildren (this=0x27e2220) at kernel/qobject.cpp:1957
#6  0x00007f03051dd41b in QObject::~QObject (this=<value optimized out>, __in_chrg=<value optimized out>) at kernel/qobject.cpp:945
#7  0x00007f02fdfe14d6 in Solid::Backends::Fstab::FstabWatcher::~FstabWatcher (this=0x2666710, __in_chrg=<value optimized out>) at ../../../solid/solid/backends/fstab/fstabwatcher.cpp:51
#8  0x00007f0303d234f2 in __run_exit_handlers (status=1) at exit.c:78
#9  exit (status=1) at exit.c:100
#10 0x00007f03045a2678 in qt_xio_errhandler () at kernel/qapplication_x11.cpp:745
#11 0x00007f0305f84bd8 in KApplication::xioErrhandler (this=0x7fff36938e10, dpy=0x2645750) at ../../kdeui/kernel/kapplication.cpp:417
#12 0x00007f0305a3186e in _XIOError () from /usr/lib/libX11.so.6
#13 0x00007f0305a39415 in ?? () from /usr/lib/libX11.so.6
#14 0x00007f0305a39d07 in _XEventsQueued () from /usr/lib/libX11.so.6
#15 0x00007f0305a2247f in XEventsQueued () from /usr/lib/libX11.so.6
#16 0x00007f03045ddc0c in x11EventSourceCheck (s=0x262b4a0) at kernel/qguieventdispatcher_glib.cpp:87
#17 0x00007f030121066a in g_main_context_check () from /lib/libglib-2.0.so.0
#18 0x00007f0301211023 in ?? () from /lib/libglib-2.0.so.0
#19 0x00007f030121145c in g_main_context_iteration () from /lib/libglib-2.0.so.0
#20 0x00007f03051f0193 in QEventDispatcherGlib::processEvents (this=0x2528cf0, flags=<value optimized out>) at kernel/qeventdispatcher_glib.cpp:415
#21 0x00007f03045dda4e in QGuiEventDispatcherGlib::processEvents (this=0x26e335c, flags=<value optimized out>) at kernel/qguieventdispatcher_glib.cpp:204
#22 0x00007f03051c2a02 in QEventLoop::processEvents (this=<value optimized out>, flags=DWARF-2 expression error: DW_OP_reg operations must be used either alone or in conjuction with DW_OP_piece or DW_OP_bit_piece.
) at kernel/qeventloop.cpp:149
#23 0x00007f03051c2dec in QEventLoop::exec (this=0x7fff36938d60, flags=DWARF-2 expression error: DW_OP_reg operations must be used either alone or in conjuction with DW_OP_piece or DW_OP_bit_piece.
) at kernel/qeventloop.cpp:201
#24 0x00007f03051c6ebb in QCoreApplication::exec () at kernel/qcoreapplication.cpp:1009
#25 0x00007f02f609a8c7 in kdemain (argc=<value optimized out>, argv=<value optimized out>) at ../../kded/kded.cpp:925
#26 0x0000000000407973 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=0x40aefb "0") at ../../kinit/kinit.cpp:746
#27 0x0000000000409ac3 in main (argc=<value optimized out>, argv=<value optimized out>, envp=<value optimized out>) at ../../kinit/kinit.cpp:1861


Reproducible: Didn't try




should there be a timeout somewhere?
Comment 1 Oswald Buddenhagen 2011-03-29 08:21:29 UTC
> should there be a timeout somewhere?
>
handling the EOF on fd 16 would be sufficient.
Comment 2 S. Burmeister 2012-04-21 12:24:11 UTC
Dup of bug 184062 ?
Comment 3 Alex Fiestas 2013-08-01 19:52:22 UTC

*** This bug has been marked as a duplicate of bug 295034 ***