POSIX SIGBUS的可能原因是什么?

时间:2014-12-23 06:26:43

标签: c++ signals posix

我的程序最近崩溃了下面的堆栈;

Program terminated with signal 7, Bus error.
#0  0x00007f0f323beb55 in raise () from /lib64/libc.so.6
(gdb) bt
#0  0x00007f0f323beb55 in raise () from /lib64/libc.so.6
#1  0x00007f0f35f8042e in skgesigOSCrash () from /usr/lib/oracle/11.2/client64/lib/libclntsh.so.11.1
#2  0x00007f0f36222ca9 in kpeDbgSignalHandler () from /usr/lib/oracle/11.2/client64/lib/libclntsh.so.11.1
#3  0x00007f0f35f8063e in skgesig_sigactionHandler () from /usr/lib/oracle/11.2/client64/lib/libclntsh.so.11.1
#4  <signal handler called>

有人可以告诉我,我应该检查我的代码以避免这种情况吗?或者这是oracle应该解决的问题吗?

2 个答案:

答案 0 :(得分:2)

BUS错误的主要原因围绕无法访问的内存。这可能是由于很多原因: -

  • 通过删除指针访问。
  • 通过未初始化的指针访问。
  • 通过NULL指针访问。
  • 访问不属于您的地址。可能是由于溢出错误。

答案 1 :(得分:0)

尝试将以下内容添加到 $ ORACLE_HOME / network / admin / *。ora 文件

DIAG_ADR_ENABLED=OFF
DIAG_SIGHANDLER_ENABLED=FALSE
DIAG_DDE_ENABLED=FALSE

这听起来像是Oracle问题

还有oracle的库似乎是由intel编译器编译的。