You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PROCESS_SHARED/ROBUST属性pthread_mutex_t死锁而非返回EOWNERDEAD

共享内存中pthread_mutex未返回EOWNERDEAD的问题

我需要在共享内存(shm)中使用锁,因此采用了pthread_mutex_t对象。为支持进程间共享,且在持有锁的进程退出时可恢复,每个pthread_mutex_t的初始化代码如下:

pthread_mutexattr_t attr;                                                                                                                                                                            
pthread_mutexattr_init(&attr);                                                                                                                                                                       
pthread_mutexattr_setpshared(&attr, PTHREAD_PROCESS_SHARED);                                                                                                                                          
pthread_mutexattr_setrobust(&attr, PTHREAD_MUTEX_ROBUST);                                                                                                                                             
pthread_mutex_init(&m_lock, &attr);  

我通过以下步骤尝试触发pthread_mutex_lock返回EOWNERDEAD的场景:

  • 启动一个进程,在共享内存中创建上述配置的pthread_mutex_t;
  • 显式调用pthread_mutex_lock获取该锁后退出进程;
  • 启动另一个进程,获取共享内存中的锁并调用pthread_mutex_lock尝试加锁。

问题在于步骤3中出现了死锁,pthread_mutex_lock始终未返回。但根据pthread mutex文档,此场景下pthread_mutex_lock应返回EOWNERDEAD,表明持有锁的进程已退出。

测试环境:

  • 系统:5.15.0-1033-aws Ubuntu 20.04 LTS
  • g版本:g (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0

内容的提问来源于stack exchange,提问作者FaceBro

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 10:22:46