trinity-users@lists.pearsoncomputing.net

Message: previous - next
Month: January 2015

Re: [trinity-users] desktop crashing

From: dep <dep@...>
Date: Tue, 13 Jan 2015 08:24:17 -0500
said Michele Calgaro:
| On 2015/01/13 12:00 PM, dep wrote:
| > (gdb) print *((int*)(0xda51f8)+2) $1 = 30334
|
| That's good. It means the mutex is locked by thread 1 (LWP 30334).
|
| I actually noticed just now (my fault) that you do not have the debug
| symbols installed for tdelibs, tdebase and tqt3. Can you install them,
| exit gdb, reattach to the kdesktop process and run again the
| thread apply all bt command? 

(gdb) thread 2
[Switching to thread 2 (Thread 0x7f5c62de7700 (LWP 30339))]
#0  __lll_lock_wait ()
    at ../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:132
132     ../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S: No such file 
or directory.
(gdb) frame 2
#2  0x00007f5c68011eba in __pthread_mutex_lock (mutex=0xda51f8)
    at pthread_mutex_lock.c:61
61      pthread_mutex_lock.c: No such file or directory.
(gdb) p *(pthread_mutex_t*)0xda51f8
$1 = {__data = {__lock = 2, __count = 0, __owner = 30334, __nusers = 1,
    __kind = 0, __spins = 0, __list = {__prev = 0x0, __next = 0x0}},
  __size = "\002\000\000\000\000\000\000\000~v\000\000\001", '\000' 
<repeats 26 times>, __align = 2}
(gdb) thread apply all bt

Thread 2 (Thread 0x7f5c62de7700 (LWP 30339)):
#0  __lll_lock_wait ()
    at ../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:132
#1  0x00007f5c68012065 in _L_lock_858 ()
   from /lib/x86_64-linux-gnu/libpthread.so.0
#2  0x00007f5c68011eba in __pthread_mutex_lock (mutex=0xda51f8)
    at pthread_mutex_lock.c:61
#3  0x00007f5c6971f4ff in TQRecursiveMutexPrivate::lock (this=0xda51f0)
    at tools/qmutex_unix.cpp:251
#4  0x00007f5c69493655 in TQMutexLocker (m=0xd99660, this=<synthetic 
pointer>)
    at ../include/ntqmutex.h:102
#5  TQEventLoop::hasPendingEvents (this=<optimized out>)
    at kernel/qeventloop_x11_glib.cpp:633
#6  0x00007f5c694931d5 in TQEventLoop::gsourceCheck (this=0x7f5c5c001340,
    gs=<optimized out>) at kernel/qeventloop_x11_glib.cpp:507
#7  0x00007f5c69493243 in qt_gsource_check (source=0x7f5c5c002200)
    at kernel/qeventloop_x11_glib.cpp:105
#8  0x00007f5c65897b03 in g_main_context_check ()
   from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#9  0x00007f5c65897f96 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#10 0x00007f5c65898124 in g_main_context_iteration ()
   from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#11 0x00007f5c69492b68 in TQEventLoop::processEvents (this=0x7f5c5c001340,
    flags=<optimized out>) at kernel/qeventloop_x11_glib.cpp:279
#12 0x00007f5c694c2319 in TQEventLoop::enterLoop (this=0x7f5c5c001340)
    at kernel/qeventloop.cpp:227
#13 0x00007f5c694c22a9 in TQEventLoop::exec (this=0x7f5c5c001340)
    at kernel/qeventloop.cpp:174
#14 0x00007f5c694a970d in TQThreadInstance::start (_arg=0xf4c5b8)
    at kernel/qthread_unix.cpp:142
#15 0x00007f5c658b99b5 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#16 0x00007f5c6800fe9a in start_thread (arg=0x7f5c62de7700)
    at pthread_create.c:308
#17 0x00007f5c6cc942ed in clone ()
    at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112
#18 0x0000000000000000 in ?? ()

Thread 1 (Thread 0x7f5c6d413780 (LWP 30334)):
#0  __lll_lock_wait_private ()
    at ../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:93
#1  0x00007f5c6cc24f61 in _L_lock_10611 () at malloc.c:5249
#2  0x00007f5c6cc22c87 in __GI___libc_malloc (bytes=140034941749024)
    at malloc.c:2921
#3  0x00007f5c68fddded in operator new(unsigned long) ()
   from /usr/lib/x86_64-linux-gnu/libstdc++.so.6
---Type <return> to continue, or q <return> to quit---
#4  0x00007f5c6972fdde in TQGArray::newData (this=<optimized out>)
    at tools/qgarray.cpp:819
#5  0x00007f5c6972fec7 in TQGArray::TQGArray (this=0x7fff3e582860)
    at tools/qgarray.cpp:118
#6  0x00007f5c69725809 in TQMemArray (this=0x7fff3e582860)
    at tools/ntqmemarray.h:61
#7  TQCString::TQCString (this=0x7fff3e582860,
    str=0x7f5c6d006c82 "1lockProcessWaiting()") at tools/qcstring.cpp:700
#8  0x00007f5c69515ccc in intSignature (
    member=0x7f5c6d006c82 "1lockProcessWaiting()") at 
kernel/qsignal.cpp:134
#9  TQSignal::connect (this=0xdb3d70, receiver=0x7fff3e583670,
    member=0x7f5c6d006c82 "1lockProcessWaiting()") at 
kernel/qsignal.cpp:148
#10 0x00007f5c695218f4 in TQSingleShotTimer::start (this=0xdb3d20, msec=0,
    r=<optimized out>, m=<optimized out>) at kernel/qtimer.cpp:281
#11 0x00007f5c6cfbeccc in SaverEngine::slotLockProcessWaiting (
    this=0x7fff3e583670)
    at /build/buildd/tdebase-trinity-14.0.0-r1865/kdesktop/lockeng.cc:548
#12 0x00007f5c6cfbcd93 in sigusr1_handler ()
    at /build/buildd/tdebase-trinity-14.0.0-r1865/kdesktop/lockeng.cc:52
#13 <signal handler called>
#14 0x00007f5c6cc2406a in __libc_calloc (n=2, elem_size=<optimized out>)
    at malloc.c:3291
#15 0x00007f5c6a1586ee in NETRArray (this=0xf402e0)
    at /build/buildd/tdelibs-trinity-14.0.0-r1231/tdecore/netwm.cpp:558
#16 NETWinInfoPrivate (this=0xf402c0)
    at /build/buildd/tdelibs-trinity-14.0.0-r1231/tdecore/netwm_p.h:122
#17 NETWinInfo::NETWinInfo (this=0x7fff3e582f60, display=0xd520d0,
    window=27263003, rootWindow=674, properties=0, role=<optimized out>)
    at /build/buildd/tdelibs-trinity-14.0.0-r1231/tdecore/netwm.cpp:2902
#18 0x00007f5c6a1b4922 in KWinModulePrivate::x11Event (this=0xdc5a80,
    ev=0x7fff3e583330)
    
at /build/buildd/tdelibs-trinity-14.0.0-r1231/tdecore/twinmodule.cpp:247
#19 0x00007f5c6a138ff0 in publicx11Event (e=0x7fff3e583330,
    this=<optimized out>)
    
at /build/buildd/tdelibs-trinity-14.0.0-r1231/tdecore/tdeapplication.cpp:1911
#20 TDEApplication::x11EventFilter (this=0xd50630, _event=0x7fff3e583330)
    
at /build/buildd/tdelibs-trinity-14.0.0-r1231/tdecore/tdeapplication.cpp:2189
#21 0x00007f5c6cfe5039 in KDesktopApp::x11EventFilter (this=0xd50630,
    xevent=0x7fff3e583330)
    
at /build/buildd/tdebase-trinity-14.0.0-r1865/kdesktop/kdesktopapp.cpp:90
#22 0x00007f5c6945b6f6 in TQApplication::x11ProcessEvent (this=0xd50630,
    event=0x7fff3e583330) at kernel/qapplication_x11.cpp:3435
#23 0x00007f5c69492d12 in TQEventLoop::processX11Events (this=0xda4be0)
    at kernel/qeventloop_x11_glib.cpp:353
#24 0x00007f5c694934f6 in TQEventLoop::gsourceDispatch (this=0xda4be0,
    gs=<optimized out>) at kernel/qeventloop_x11_glib.cpp:614
#25 0x00007f5c69493623 in qt_gsource_dispatch (source=0xda5c00,
    callback=<optimized out>, user_data=<optimized out>)
    at kernel/qeventloop_x11_glib.cpp:123
#26 0x00007f5c65897d13 in g_main_context_dispatch ()
   from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#27 0x00007f5c65898060 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#28 0x00007f5c65898124 in g_main_context_iteration ()
   from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#29 0x00007f5c69492b68 in TQEventLoop::processEvents (this=0xda4be0,
    flags=<optimized out>) at kernel/qeventloop_x11_glib.cpp:279
#30 0x00007f5c694c2319 in TQEventLoop::enterLoop (this=0xda4be0)
    at kernel/qeventloop.cpp:227
#31 0x00007f5c694c22a9 in TQEventLoop::exec (this=0xda4be0)
    at kernel/qeventloop.cpp:174
#32 0x00007f5c6cf973ec in kdemain (argc=1, argv=0x7fff3e583dc8)
    at /build/buildd/tdebase-trinity-14.0.0-r1865/kdesktop/main.cc:293
#33 0x00000000004007a4 in main (argc=1, argv=0x7fff3e583dc8)
    
at /build/buildd/tdebase-trinity-14.0.0-r1865/obj-x86_64-linux-gnu/kdesktop/kdesktop_tdeinit_executable.cpp:2
#34 0x00007f5c6cbc176d in __libc_start_main (
    main=0x400784 <main(int, char**)>, argc=1, ubp_av=0x7fff3e583dc8,
---Type <return> to continue, or q <return> to quit---
    init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>,
    stack_end=0x7fff3e583db8) at libc-start.c:226
#35 0x00000000004006c9 in _start ()
(gdb)                                 

| That should provide more detailed information (i.e. line 
| numbers) about where each thread and frame is.
| From a quick look at the current incomplete stack frame, thread 1
| (which is blocking thread 2) is blocked inside a malloc() call, which
| as far as I can tell is usually a sign that the heap is corrupted
| (perhaps a pointer deallocated twice). Now we are kind of stretching
| to the limit of my knowledge as well, so I will need to guess/look up
| what's the best way to go.
|
| By the way, when kdesktop_lock crashes do you have any crash report
| window popping up in your system?

no. the only way i know it has happened is when i notice that the desktop 
program (xplanet set to refresh hourly) has stopped refreshing. nor does 
xerrors (or whatever it's called now) report anything. 

| In the mean time, can you try the following things:

| 1) install the debug symbols as said above and provide the updated
| stack frames

done, above.

| 2) kill kdesktop and run it again (or reboot your system, even
| better). From CLI (outside TDE), run:
| ps aux |grep kdesktop
| Take note of the kdesktop_lock pid. Run:
| gdb --pid=<kdesktop_lock pid>
| After gdb attaches to the process, continue execution with:
| c
| At this stage kdesktop_lock should be running normally. Leave
| everything running until kdesktop_lock crashes again. At this point
| gdb should provide some info about the crash (perhaps a segmentation
| fault - SIGSEGV). When it happens you should be able to get the stack
| frame for kdesktop_lock (again thread apply all bt) since gdb is still
| attached to the process. Do not exit gdb after that, not sure what
| else we may need. All this is somehow experimental, if something
| doesn't go to plan, please let me know.

will do. thanks very much for taking time to dig into this.
-- 
dep

The shortest distance between you and playing great acoustic guitar:
the great new instructional DVDs from Marjorie Thompson, 
available at www.MarjorieThompson.com