核心转储的原因是什么?来自 oracle lib 的堆栈显示

what is the reason for core dump? stack shows from oracle lib

我有一个 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.

注:

  1. Before voting down, can you guys tell me why voting down? I am really clueless as what to check
  2. Here is another Whosebug link where stack is similar but not same, but still no clear answer
  3. Link talks about orable bug, Is this same isue?

看起来是 oracle 11g 上的问题。

  1. 从 Oracle 11g 开始,诊断信息库默认打开。自动诊断存储库 (ADR) DIAG_SIGHANDLER_ENABLEDDIAG_ADR_ENABLEDDIAG_DDE_ENABLED 等参数大多设置为 SQLNET.ORA。

DIAG_SIGHANDLER_ENABLED 将强制写入所有诊断信息,例如警报日志、跟踪文件、应用程序转储,这会导致过载,有时应用程序会出错。

  1. 要关闭信号处理程序并重新启用标准操作系统故障处理,请将以下参数设置放在客户端或服务器端 sqlnet.ora 文件的 $[=40= 下]目录。

    DIAG_ADR_ENABLED=OFF
    DIAG_SIGHANDLER_ENABLED=FALSE
    DIAG_DDE_ENABLED=FALSE
    

默认情况下,此参数设置为 true。

对 ADR 进行任何此类更改后,即关闭 DIAG_SIGHANDLER_ENABLEDDIAG_ADR_ENABLEDDIAG_DDE_ENABLED,建议在 [=42] 中进行设置后重新启动应用程序=].

  1. 关闭 ADR 参数应该不会对您的应用程序或数据库造成影响。