我正在编写c ++ 11多线程应用程序。
主线程是从数据库读取并将记录放入std :: queue,线程从队列中获取记录并处理它们。
使用std :: mutex,std :: condition_variable(定义为类成员)同步应用程序,方法使用std :: unique_lock(类成员互斥)
经过一段时间(通常是几分钟) - 我的应用程序崩溃了
terminate called after throwing an instance of 'std::system_error'
what(): Operation not permitted
Program received signal SIGABRT, Aborted.
[Switching to Thread 0x7ffff5464700 (LWP 10242)]
0x00007ffff60b3515 in raise () from /lib64/libc.so.6
从gdb回溯显示:
#0 0x00007ffff60b3515 in raise () from /lib64/libc.so.6
#1 0x00007ffff60b498b in abort () from /lib64/libc.so.6
#2 0x00007ffff699f765 in __gnu_cxx::__verbose_terminate_handler() () from /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/libstdc++.so.6
#3 0x00007ffff699d906 in ?? () from /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/libstdc++.so.6
#4 0x00007ffff699d933 in std::terminate() () from /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/libstdc++.so.6
#5 0x00007ffff69f0a75 in ?? () from /usr/lib/gcc/x86_64-pc-linux-gnu/4.8.3/libstdc++.so.6
#6 0x00007ffff76741a7 in start_thread () from /lib64/libpthread.so.0
#7 0x00007ffff616a1fd in clone () from /lib64/libc.so.6
如何获得有关此例外的更多信息?
我正在使用-pthread选项进行编译和链接 Gentoo Linux机器上的G ++ 4.8.3 在编译器和链接器中都启用了-g选项 我尝试过禁用优化