我有一个 coredmp,其中所有线程堆栈看起来都很正常,但一个堆栈显示如下。任何人都可以告诉我这可能的原因吗?我可以看到正在从 oracle 库调用 exit,这是 oracle 的问题吗?当这种情况发生时,任何人都可以指导我吗?
Thread 3 (process 26454):
#0 0x00002b803ceb54a8 in exit () from /lib64/libc.so.6
#1 0x00002b803bbe93f5 in skgdbgcra () from /home/oracle/product/11g/lib/libclntsh.so.11.1
#2 0x00002b803be9cdec in kpeDbgCrash () from /home/oracle/product/11g/lib/libclntsh.so.11.1
#3 0x00002b803be9c627 in kpeDbgSignalHandler () from /home/oracle/product/11g/lib/libclntsh.so.11.1
#4 0x00002b803bbe64b1 in skgesig_sigactionHandler () from /home/oracle/product/11g/lib/libclntsh.so.11.1
#5 <signal handler called>
> Program terminated with signal 6, Aborted.
注意:
- Before voting down, can you guys tell me why voting down? I am really clueless as what to check
- Here is another stackoverflow link where stack is similar but not same, but still no clear answer
- Link talks about orable bug, Is this same isue?
最佳答案
看起来这是 oracle 11g 上的问题。
- 从 Oracle 11g 开始,默认情况下启用诊断信息库。
DIAG_SIGHANDLER_ENABLED
、DIAG_ADR_ENABLED
、DIAG_DDE_ENABLED
等自动诊断存储库 (ADR) 参数大多在 SQLNET.ORA 中设置。
DIAG_SIGHANDLER_ENABLED
将强制写入所有诊断信息,例如警报日志、跟踪文件、应用程序转储,这会导致过载,有时应用程序会出错。
要关闭信号处理程序并重新启用标准操作系统故障处理,请将以下参数设置放在 $ORACLE_HOME/network/admin 目录下的客户端或服务器端 sqlnet.ora 文件中。
DIAG_ADR_ENABLED=OFF DIAG_SIGHANDLER_ENABLED=FALSE DIAG_DDE_ENABLED=FALSE
默认情况下,此参数设置为 true。
对 ADR 进行任何此类更改后,即关闭 DIAG_SIGHANDLER_ENABLED
、DIAG_ADR_ENABLED
、DIAG_DDE_ENABLED
,建议在之后重新启动应用程序在 sqlnet.ora 中进行设置。
- 关闭 ADR 参数不会对您的应用程序或数据库造成任何影响。
关于c++ - 核心转储的原因是什么?来自 oracle lib 的堆栈显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28449276/