c++ - 什么会导致应用程序在工作几个小时后因 SIGABRT 获取锁而失败?

标签 c++ multithreading boost c++11 zeromq

我想知道在工作几个小时后可能导致应用程序因 SIGABRT 获取锁而失败的一般问题是什么?

它主要发生在 std::lock_guard<std::mutex> lock(sync); 上的一个特定类析构函数代码中

有时它发生在 boost::mutex::scoped_lock lock(mutex);那是里面 try catch(std::exception& e) block 。

应用程序没有可检测到的内存泄漏。使用 Boost、ZeroMQ、HiRedis。代码库很大,所以我想知道我们要寻找的主要内容是什么?什么会导致此类问题(至少在理论上)?

最佳答案

锁定/解锁损坏的互斥量? (即处理被删除的对象)可能大多数时候

同一线程中的双重锁?

析构函数异常?

statics的并行初始化?

关于c++ - 什么会导致应用程序在工作几个小时后因 SIGABRT 获取锁而失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21063071/

相关文章:

Java 线程未启动?

.net - 寻找丑陋的多线程的标准替代品

c++ - 使用 boost::asio::basic_stream_socket::async_read_some 而不是 boost::asio::async_read 是否更有效?

c++ - 在 Visual Studio 2010 中将仿函数传递给 boost::thread 失败

c++ - 将 std::string 数据的深层拷贝存储到 std::vector

c++ - Makefile 应该在另一个目录中搜索 .o 文件

c++指针的内存分配 vector

Android:ContentResolver 实例是线程安全的吗?

c++ - 在方阵中,每个单元格都是黑色或白色。设计一种算法来找到最大白色子方格

c++ - 如何使用 BOOST 获取函数调用约定?