我的生产服务器上的apache间歇性故障。我已经在Apache配置中启用了Core Dump选项,并具有多个已转储的Core文件。不幸的是,由于它是生产服务器,Apache或已加载的模块没有使用调试符号编译。据我了解,没有调试符号,GDB无法做太多。
我至少可以找出哪些模块导致SEG故障,而没有调试符号?如果是这样,如何?
[update] 以下是GDB回溯的输出
(gdb) bt full
#0 0xb7f1f832 in _dl_sysinfo_int80 () from /lib/ld-linux.so.2
No symbol table info available.
#1 0xb7be82bc in pthread_cond_wait@@GLIBC_2.3.2 () from /lib/libpthread.so.0
No symbol table info available.
#2 0xb771652a in ?? () from /usr/local/apache/modules/mod_pagespeed.so
No symbol table info available.
#3 0xb75df576 in ?? () from /usr/local/apache/modules/mod_pagespeed.so
No symbol table info available.
#4 0xb7715c20 in ?? () from /usr/local/apache/modules/mod_pagespeed.so
No symbol table info available.
#5 0xb7be4a49 in start_thread () from /lib/libpthread.so.0
No symbol table info available.
#6 0xb7b2a63e in clone () from /lib/libc.so.6
No symbol table info available.
这是否意味着/lib/ld-linux.so.2引起了seg故障?
快速搜索_dl_sysinfo_int80
显示以下线程...
http://linux.derkeiler.com/newsgroups/comp.os.linux.development.apps/2005-02/0462.html
回答您的问题,我怀疑/lib/ld-linux.so.2
会导致分割故障。这只是等待的众多线程之一。
运行thread apply all bt full
以获取崩溃时运行的所有线程的堆栈跟踪。然后应清楚哪个线程导致segfault。这应该为您提供更多有关正在发生的事情的证据。