2011-06-14 105 views
0

有人可以解释为什么会发生以下损坏的堆栈跟踪?Solaris上损坏的堆栈回溯

Program terminated with signal 11, Segmentation fault. 
Reading symbols from /usr/lib/libxnet.so.1...done. 
Loaded symbols for /usr/lib/libxnet.so.1 
Reading symbols from /usr/lib/libsocket.so.1...done. 
Loaded symbols for /usr/lib/libsocket.so.1 
Reading symbols from /usr/lib/libnsl.so.1...done. 
Loaded symbols for /usr/lib/libnsl.so.1 
Reading symbols from /usr/lib/libxml2.so.2...done. 
Loaded symbols for /usr/lib/libxml2.so.2 
Reading symbols from /opt/csw/lib/libiconv.so.2...done. 
Loaded symbols for /opt/csw/lib/libiconv.so.2 
Reading symbols from /usr/lib/libcrypt_i.so.1...done. 
Loaded symbols for /usr/lib/libcrypt_i.so.1 
Reading symbols from /usr/lib/libpthread.so.1... 
warning: Lowest section in /usr/lib/libpthread.so.1 is .dynamic at 00000074 
done. 
Loaded symbols for /usr/lib/libpthread.so.1 
Reading symbols from /usr/lib/libm.so.2...done. 
Loaded symbols for /usr/lib/libm.so.2 
Reading symbols from /usr/lib/librt.so.1...done. 
Loaded symbols for /usr/lib/librt.so.1 
Reading symbols from /usr/lib/libc.so.1...done. 

warning: rw_common(): unable to read at addr 0x0 

warning: sol_thread_new_objfile: td_ta_new: Debugger service failed 
Loaded symbols for /usr/lib/libc.so.1 
Reading symbols from /usr/lib/libz.so.1...done. 

warning: rw_common(): unable to read at addr 0x0 

warning: sol_thread_new_objfile: td_ta_new: Debugger service failed 
Loaded symbols for /usr/lib/libz.so.1 
Reading symbols from /usr/lib/libgen.so.1...done. 

warning: rw_common(): unable to read at addr 0x0 

warning: sol_thread_new_objfile: td_ta_new: Debugger service failed 
Loaded symbols for /usr/lib/libgen.so.1 
Reading symbols from /usr/lib/libaio.so.1...done. 

warning: rw_common(): unable to read at addr 0x0 

warning: sol_thread_new_objfile: td_ta_new: Debugger service failed 
Loaded symbols for /usr/lib/libaio.so.1 
Reading symbols from /usr/lib/libmd.so.1...done. 

warning: rw_common(): unable to read at addr 0x0 

warning: sol_thread_new_objfile: td_ta_new: Debugger service failed 
Loaded symbols for /usr/lib/libmd.so.1 
#0 0xfeb3487a in _malloc_unlocked() from /usr/lib/libc.so.1 
(gdb) bt 
#0 0xfeb3487a in _malloc_unlocked() from /usr/lib/libc.so.1 
#1 0x210b5a68 in ??() 
#2 0xfec0e5d0 in signames() from /usr/lib/libc.so.1 
#3 0xfec0d000 in _sys_cldlist() from /usr/lib/libc.so.1 
#4 0x08046a28 in ??() 
#5 0xfeb34704 in _malloc_unlocked() from /usr/lib/libc.so.1 
#6 0x00002008 in ??() 
#7 0x210b5a68 in ??() 
#8 0x21151b70 in ??() 
#9 0xfeeda3b0 in ??() from /usr/lib/libxml2.so.2 
#10 0x08046a3c in ??() 
#11 0xfee03c42 in xmlBufferCreateSize() from /usr/lib/libxml2.so.2 
Previous frame inner to this frame (corrupt stack?) 

内核发生在构建于x86机器上的进程中。 如果在执行该过程的机器上执行回溯,则回溯是完美的,具有完整的 帧信息。 但是,如果我在构建机器(不同的机器)上使用核心进行回溯,那么我就是上面的跟踪。我认为

一个明显的一点是在OS 一个具有5.10 Generic_138889-03(执行机)在不同的补丁级别和其他有5.10 Generic_138889-02(建机) 所以转数是关闭的。 这是原因吗?或者还有什么可能? 我能做些什么来查看全帧信息,以便更详细地检查核心内存?

希望有什么想法。

谢谢。

+0

道歉,我不知道为什么痕迹以粗体显示。 – bpm 2011-06-14 10:05:11

回答

1

请确保您在构建机器上具有与执行过程的计算机上完全相同的一组共享库。如果情况并非如此,将进程使用的所有共享库从工作计算机复制到生成计算机上的文件夹,请将LD_LIBRARY_PATH设置为此文件夹,请启动gdb并再次运行bt

您可以在执行进程的计算机上使用gdb中的info sharedlibraries命令获得的相关共享库的完整列表。