我有一个 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.
还有另一个stackoverflow链接,其中stack类似但不一样,但仍然没有明确的答案。
此链接讨论了 Oracle 错误,这是同一个问题吗?
看起来这是 Oracle 11g 上的问题。
DIAG_SIGHANDLER_ENABLED
、DIAG_ADR_ENABLED
、DIAG_DDE_ENABLED
等主要在 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 中进行设置后重新启动应用程序。