为什么 pthread_mutex_t 结构在 gdb 中全为零?
Why is the pthread_mutex_t struct all zeros in gdb?
什么导致 pthread_mutex_t 结构全为零?
gdb 会话中死锁 ARM 测试应用程序的核心:
[Switching to thread 3 (LWP 3587)]
#0 __lll_lock_wait (futex=futex@entry=0x2105c <one_mutex>, private=0) at lowlevellock.c:46
46 lowlevellock.c: No such file or directory.
(gdb) f 1
#1 0xaf973818 in __GI___pthread_mutex_lock (mutex=0x2105c <one_mutex>) at pthread_mutex_lock.c:81
81 pthread_mutex_lock.c: No such file or directory.
(gdb) p mutex
= (pthread_mutex_t *) 0x2105c <one_mutex>
(gdb) p (pthread_mutex_t ) 0x2105c
= {
__data = {
__lock = 0,
__count = 0,
__owner = 0,
__kind = 0,
__nusers = 0,
{
__spins = 0,
__list = {
__next = 0x0
}
}
},
__size = '[=11=]0' <repeats 23 times>,
__align = 0
}
pthread_mutex_t
用于所有互斥类型,它的一些成员只用于特定的互斥类型。
owner
至少为以下互斥类型设置了成员:
PTHREAD_MUTEX_ERRORCHECK_NP
PTHREAD_MUTEX_RECURSIVE_NP
有关详细信息,请参阅 glibc implementation of pthread_mutex_trylock
。
什么导致 pthread_mutex_t 结构全为零? gdb 会话中死锁 ARM 测试应用程序的核心:
[Switching to thread 3 (LWP 3587)]
#0 __lll_lock_wait (futex=futex@entry=0x2105c <one_mutex>, private=0) at lowlevellock.c:46
46 lowlevellock.c: No such file or directory.
(gdb) f 1
#1 0xaf973818 in __GI___pthread_mutex_lock (mutex=0x2105c <one_mutex>) at pthread_mutex_lock.c:81
81 pthread_mutex_lock.c: No such file or directory.
(gdb) p mutex
= (pthread_mutex_t *) 0x2105c <one_mutex>
(gdb) p (pthread_mutex_t ) 0x2105c
= {
__data = {
__lock = 0,
__count = 0,
__owner = 0,
__kind = 0,
__nusers = 0,
{
__spins = 0,
__list = {
__next = 0x0
}
}
},
__size = '[=11=]0' <repeats 23 times>,
__align = 0
}
pthread_mutex_t
用于所有互斥类型,它的一些成员只用于特定的互斥类型。
owner
至少为以下互斥类型设置了成员:
PTHREAD_MUTEX_ERRORCHECK_NP
PTHREAD_MUTEX_RECURSIVE_NP
有关详细信息,请参阅 glibc implementation of pthread_mutex_trylock
。