2011-06-14 56 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命令獲得的相關共享庫的完整列表。