linux - 为什么 gdb 中的 pthread_mutex_t 结构全为零?
问题描述
是什么导致 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
$1 = (pthread_mutex_t *) 0x2105c <one_mutex>
(gdb) p (pthread_mutex_t ) 0x2105c
$2 = {
__data = {
__lock = 0,
__count = 0,
__owner = 0,
__kind = 0,
__nusers = 0,
{
__spins = 0,
__list = {
__next = 0x0
}
}
},
__size = '\000' <repeats 23 times>,
__align = 0
}
解决方案
pthread_mutex_t
用于所有互斥体类型,它的一些成员仅用于特定的互斥体类型。
owner
至少为以下互斥锁类型设置了成员:
PTHREAD_MUTEX_ERRORCHECK_NP
PTHREAD_MUTEX_RECURSIVE_NP
有关更多详细信息,请参阅glibc 实现。pthread_mutex_trylock
推荐阅读
- php - 如何将变量从链接传递到laravel中的另一个视图
- html - 无法在具有文件上传和表单数据的 jmeter 中发送 POST 请求
- perl - 如何在 Mojolicious 中获取 IP 地址?
- jenkins - 如何在詹金斯管道中集成UCD?
- sprite - CSS Spritesheet 动画,顺时针然后逆时针
- python - python pandas数据框填充,例如bfill,ffill
- java - 在石英作业中使用@Autowired 服务
- python - 需要从 JSON 文件中截取一些不必要的信息并保留 JSON 结构
- python - VGG-16 和 ResNet 的最小输入大小是多少,我可以更改它们吗?
- css - 如何根据表格大小定位下拉或下拉