pthread_mutex_lock已锁定但未设置所有者或计数

时间:2015-01-28 09:26:49

标签: c locking pthreads mutex deadlock

发生了死锁,发现pthread_mutex_lock正在等待获取锁定,但互斥锁已锁定且所有者设置为零。

p *(*spinLock)->lock
$47 = {__data = {__lock = 1, __count = 0, __owner = 0, __kind = 0, __nusers = 0, {__spins = 0, __list = {__next = 0x0}}}, __size = "\001", '\000' <repeats 22 times>, __align = 1}

我在这里想知道,只有lock和__align设置为1但重置包括所有者和计数设置为零。最初我想到了腐败,但是当我检查分配的大小时,它是正确的。

(gdb) p (*spinLock)->lock
$49 = (pthread_mutex_t *) 0x2df7a764
(gdb) x/2x 0x2df7a764-4
0x2df7a760: 0x0000001c  0x00000001
(gdb) p/x sizeof(*(*spinLock)->lock)+4
$51 = 0x1c

我试图找出可能导致这种情况的原因,但我不能。任何指针都会真的。谢谢!

0 个答案:

没有答案