Pthread互斥锁断言失败

这几天我试图提前解决这个问题,但似乎不是我的错。我不能发布任何代码,因为它足够大。我会尽力更好地解释它。 首先它是一个multithreaded server application,同时接收来自多个客户端的请求,并使用主线程(线程池)与AF_UNIX套接字进行详细说明。 虽然它的运行往往导致这个错误:Pthread互斥锁断言失败

【名称】:../nptl/pthread_mutex_lock.c:81:__pthread_mutex_lock:断言`互斥 - > __数据.__所有者== 0' 失败。

我不能复制这个错误,或者用valgrind或gdb来捕获它(我试了几次)。 我用几个全球pthread_mutex_tPTHREAD_MUTEX_INITIALIZER初始化,我用从来没有销毁它们。我敢肯定,以锁定和解锁安全身边这样的代码:

  1. pthread_mutex_lock(&mutex);
  2. 如果事情失败,我已经从一个线程返回:pthread_mutex_unlock(&mutex);return (void*) -1;
  3. 其他:做事与共享变量
  4. pthread_mutex_unlock(&mutex);

我读过,它可以通过一个较低的水平的比赛条件引起文件,但我不确定。 顺便说一句,我会明白为什么这个断言可能会失败一般

回答:

这通常表明锁已成为以某种方式损坏。一种可能性是,您试图锁定一个从未初始化或已经被销毁但未重新初始化的锁。另一种可能是某些其他代码片段正在跺脚互斥,可能是通过访问数组越界或在释放后访问某些内存。

以上是 Pthread互斥锁断言失败 的全部内容, 来源链接: utcz.com/qa/257447.html

回到顶部