multithreading - Is it possible to obtain a backtrace inside a vDSO call? -
i trying debug deadlock issue in code using gdb. when program locked up, attached gdb see threads doing. reason, cannot obtain backtraces threads other current one:
(gdb) bt #0 0xb774dcb0 in ?? () #1 0x8420e178 in tablecollect #2 0x84200c12 in main (gdb) thread apply bt thread 3 (thread 0xb6becb40 (lwp 18937)): #0 0xb774dcb0 in ?? () #1 0x000d6ee6 in ?? () thread 2 (thread 0xb1f5eb40 (lwp 18939)): python exception <class 'gdb.memoryerror'> cannot access memory @ address 0x5: #0 0xb774dcb0 in ?? () cannot access memory @ address 0x5 (gdb) info threads id target id frame 3 thread 0xb6becb40 (lwp 18937) "loader.elf" 0xb774dcb0 in ?? () 2 thread 0xb1f5eb40 (lwp 18939) "tuner" 0xb774dcb0 in ?? () * 1 thread 0xb6bed700 (lwp 18936) "loader.elf" 0xb774dcb0 in ?? () (gdb) thread 2 [switching thread 2 (thread 0xb1f5eb40 (lwp 18939))] #0 0xb774dcb0 in ?? () (gdb) bt python exception <class 'gdb.memoryerror'> cannot access memory @ address 0x5: #0 0xb774dcb0 in ?? () cannot access memory @ address 0x5 (gdb) thread 3 [switching thread 3 (thread 0xb6becb40 (lwp 18937))] #0 0xb774dcb0 in ?? () (gdb) bt #0 0xb774dcb0 in ?? () #1 0x000d6ee6 in ?? () ninja@vm:build$ cat /proc/`pidof loader.elf`/maps | grep b774d b774b000-b774d000 r--p 00000000 00:00 0 [vvar] b774d000-b774f000 r-xp 00000000 00:00 0 [vdso]
so looks threads inside system call? that's since i'm expecting them stuck on ptread_mutex_lock
, why don't have valid stack frames below that? why 0x5
address thread 2? , why thread 3 have 0xd6ee6
on stack, isn't mentioned in memory map?
Comments
Post a Comment