我可以在 pthread_mutex_t 双重解锁时强制崩溃吗?
Can I force a crash when I double-unlock a pthread_mutex_t?
与 this question 相关 --- 我正在调试一些将互斥体解锁两次的代码,我正试图弄清楚它发生的确切时间。我正在从 Helgrind 获取堆栈跟踪,但我希望程序在执行错误解锁时立即崩溃。
我知道解锁一个已经解锁的互斥锁的行为是未定义的,所以鼻恶魔是一个可以接受的实现——我当然不能强迫鼻恶魔崩溃。但是鉴于最近版本的 glibc 中的 pthreads 实现,有没有办法合理可靠地获得这种行为?
您可以检查 pthread_mutex_unlock
的 return 值并使用 error-checking 互斥体(PTHREAD_MUTEX_ERRORCHECK
互斥体类型)而不是崩溃。如果您检测到错误,请调用 abort()
或其他任何方法。
与 this question 相关 --- 我正在调试一些将互斥体解锁两次的代码,我正试图弄清楚它发生的确切时间。我正在从 Helgrind 获取堆栈跟踪,但我希望程序在执行错误解锁时立即崩溃。
我知道解锁一个已经解锁的互斥锁的行为是未定义的,所以鼻恶魔是一个可以接受的实现——我当然不能强迫鼻恶魔崩溃。但是鉴于最近版本的 glibc 中的 pthreads 实现,有没有办法合理可靠地获得这种行为?
您可以检查 pthread_mutex_unlock
的 return 值并使用 error-checking 互斥体(PTHREAD_MUTEX_ERRORCHECK
互斥体类型)而不是崩溃。如果您检测到错误,请调用 abort()
或其他任何方法。