本文共 676 字,大约阅读时间需要 2 分钟。
今天遇到一个奇怪的现象, 同一个程序在一台机器上运行能捕获代码抛出的c++异常, 在另外一台机器上无法捕获异常直接abort出来,
堆栈如下: #0 0xf77c6430 in __kernel_vsyscall () #1 0x002b6df0 in raise () from /lib/libc.so.6 #2 0x002b8701 in abort () from /lib/libc.so.6 #3 0x00615acc in _Unwind_Resume () from /lib/libgcc_s.so.1 #4 0x086bacbb in XXXXXXXXXXXXXXXXX 经过gdb单步跟踪基本怀疑是运行库的兼容性问题, 分别检查两台机器的gcc/glibc/libstdc++版本, 果然发现了端倪。 没问题的机器: ls -lt /lib/libgcc_s.so.1 lrwxrwxrwx. 1 root root 28 Oct 31 09:01 /lib/libgcc_s.so.1 -> libgcc_s-4.4.6-20120305.so.1 有问题的机器: ls -lt /lib/libgcc_s.so.1 lrwxrwxrwx 1 root root 28 Sep 11 08:29 /lib/libgcc_s.so.1 -> libgcc_s-4.1.2-20080825.so.1 在备份之后, 果断把libgcc_s-4.4.6-20120305.so.1拷贝到有问题的机器上没覆盖之。 再试, 竟然没问题了。转载地址:http://njzvb.baihongyu.com/