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 机器上构建的进程。 如果在执行进程的机器上进行回溯,那么回溯是完美的,具有完整的 帧信息。 但是,如果我在构建机器(另一台机器)上使用核心进行回溯,我会得到上面的跟踪。
我考虑的一件明显的事情是操作系统上的补丁级别不同 一台具有 5.10 Generic_138889-03
(执行机),另一台具有 5.10 Generic_138889-02
(构建机) 所以转速是关闭的。 会是这个原因吗?或者还能是什么? 我可以做些什么来查看全帧信息,以便更详细地检查核心内存?
如有任何想法,将不胜感激。
谢谢。
Could someone explain why the following corrupted stack trace can occur?
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?)
The core occurs from a process built on x86 machine.
If the backtrace is performed on the machine executing the process, the backtrace is perfect, with full
frame information.
However if I do the backtrace with the core on the build machine (a different machine), I the trace above.
One obvious thing I considered was different patch level on the OS
One has 5.10 Generic_138889-03
(execution machine) and the other has 5.10 Generic_138889-02
(build machine)
So the rev number is off.
Would this be the reason? Or what else could it be?
Anything I can do to see full frame information to allow me to examine core memory in more detail?
Would appreciate any thoughts.
Thanks.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
确保构建计算机上的共享库集与执行进程的计算机上的共享库集完全相同。如果不是这种情况,请将进程使用的所有共享库从工作计算机复制到构建计算机上的文件夹,将 LD_LIBRARY_PATH 设置为此文件夹,启动 gdb 并运行 bt< /代码> 再次。
您可以使用正在执行进程的计算机上的 gdb 中的
info sharelibraries
命令获取相关共享库的完整列表。Make sure that you have on the build machine completely the same set of shared libraries as on the computer that is executing the process. If this is not the case copy all shared libraries that are used by your process from the working computer to a folder on the build machine, set
LD_LIBRARY_PATH
to this folder, start gdb and runbt
again.The full list of relevant shared libraries you can get with the
info sharedlibraries
command in gdb on the computer that is executing the process.