我支持用C++编写多年的应用程序,最近它已经开始崩溃,提供我们不知道如何处理的核心转储。 它运行在一个设备上的Ubuntu 14.04.5核心转储文件中等待的所有线程,但有人触发SIG_ABRT
当加载在GDB的核心文件,它说: 计划与信号SIGABRT终止,中止
我可以检查230个线程,但他们都在等待( )在完全相同的记忆位置。
有一个ID 1的线程,理论上可以是负责任的,但线程也在等待。
所以我基本上有两个问题。
线程的id索引是如何工作的? GDB ID是最后一个活动线程的线程?或者是一个任意的索引和失败可以在任何其他线程?
当SIGABRT被触发时,所有线程如何处于wait()状态? 当操作系统决定停止进程时,指令指针是否应该出现在失败的命令中?或者它是一种死锁保护?
任何帮助非常感谢。
回溯线程1:
#0 0xf771dcd9 in ??()
#1 0xf74ad4ca in _int_free (av=0x38663364, p=<optimized out>,have_lock=-186161432) at malloc.c:3989
#2 0xf76b41ab in std::string::_Rep::_M_destroy(std::allocator<char> const&)() from /usr/lib32/libstdc++.so.6
#3 0xf764f82f in operator delete(void*)() from /usr/lib32/libstdc++.so.6
#4 0xf764f82f in operator delete(void*)() from /usr/lib32/libstdc++.so.6
#5 0x5685e8b4 in SlimStringMapper::~SlimStringMapper()()
#6 0x567d6bc3 in destroy()
#7 0x566a40b4 in HttpProxy::getLogonCredentials(HttpClient*, HttpServerTransaction*, std::string const&, std::string const&, std::string&, std::string&)()
#8 0x566a5d04 in HttpProxy::add_authorization_header(HttpClient*, HttpServerTransaction*, Hosts::Host*)()
#9 0x566af97c in HttpProxy::onClientRequest(HttpClient*, HttpServerTransaction*)()
#10 0x566d597e in callOnClientRequest(HttpClient*, HttpServerTransaction*, FastHttpRequest*)()
#11 0x566d169f in GateKeeper::onClientRequest(HttpClient*, HttpServerTransaction*)()
#12 0x566a2291 in HttpClientThread::run()()
#13 0x5682e37c in wa_run_thread()
#14 0xf76f6f72 in start_thread (arg=0xec65ab40) at pthread_create.c:312
#15 0xf75282ae in query_module() at ../sysdeps/unix/syscall-template.S:82
#16 0xec65ab40 in ??()
另一个线程,应该是在等待:
#0 0xf771dcd9 in ??()
#1 0x5682e37c in wa_run_thread()
#2 0xf76f6f72 in start_thread (arg=0xf33bdb40) at pthread_create.c:312
#3 0xf75282ae in query_module() at ../sysdeps/unix/syscall-template.S:82
#4 0xf33bdb40 in ??()
问候 乔恩
什么是从GDB'backtrace'命令线程1 *输出的完整? –
更新上面.. –