-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA512
<snip>
(gdb) info thread Id Target Id Frame 2 Thread 0x7f5c62de7700 (LWP 30339) "kdesktop" 0x00007f5c6801689c in __lll_lock_wait () from /lib/x86_64-linux-gnu/libpthread.so.0
- 1 Thread 0x7f5c6d413780 (LWP 30334) "kdesktop" 0x00007f5c6cca1feb
in ?? () from /lib/x86_64-linux-gnu/libc.so.6
| 2) thread 2 | Expect something like "switching to thread 2 blah blah blah"
(gdb) thread 2 [Switching to thread 2 (Thread 0x7f5c62de7700 (LWP 30339))] #0 0x00007f5c6801689c in __lll_lock_wait () from /lib/x86_64-linux-gnu/libpthread.so.0
| frame 2 | Expect something like "#2 hex-adress in pthread_mutex_lock()"
(gdb) frame 2 #2 0x00007f5c68011eba in pthread_mutex_lock () from /lib/x86_64-linux-gnu/libpthread.so.0
| info reg | This will print the registers' contents.
(gdb) info reg
<snip>
rsp 0x7f5c62de6c40 0x7f5c62de6c40 r8 0xda51f8 14307832 r9 0x7683 30339
<snip>
many thanks. i should note that the above began from gdb --pid=30334 without the additional command(s) done yesterday. should i go back and redo it? forgive me, but this is several levels beyond my understanding!
Thanks for the info, no need to rerun the previous commands since the thread IDs are the same. Register r8 should contain the address of the locked mutex. Please try this in the open gdb console.
(gdb) p *(pthread_mutex_t*)0xda51f8 Expect something like:
__data = { __lock = xxx, __count = yyy, __owner = thread_ID, ....
This should give the id of the thread which has locked the mutex. Please report back, then we take the next step. If gdb complains about pthread_mutex_t, please try this: print *((int*)(0xda51f8)+2)
Cheers Michele