堆芯转储的原因是什么?来自oraclelib的堆栈显示

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

本文关键字:oraclelib 来自 堆栈 显示 转储 是什么      更新时间:2023-10-16

我有一个coredmp,其中所有线程堆栈看起来都很正常,但一个堆栈显示为这样。有人能告诉我可能的原因吗?我可以看到出口是从甲骨文的libs调用的,这是甲骨文的问题吗?有人能指导我什么时候会发生这种事吗?

 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. 在投票否决之前,你们能告诉我为什么要投票否决吗?我真的不知道该检查什么
  2. 这里是另一个stackoverflow链接,其中堆栈相似但不相同,但仍然没有明确的答案
  3. 林克谈到了orable bug,这是同样的吗

看起来这是oracle11g上的一个问题。

  1. 从Oracle 11g启动诊断存储库默认情况下处于启用状态。自动诊断库(ADR)参数,如DIAG_SIGHANDLER_ENABLEDDIAG_ADR_ENABLEDDIAG_DDE_ENABLED,大多设置在SQLNET.ORA中

拥有DIAG_SIGHANDLER_ENABLED将强制编写所有诊断,如警报日志、跟踪文件、应用程序转储,这将成为一种过载,有时应用程序会出错。

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

    DIAG_ADR_ENABLED=OFF
    DIAG_SIGHANDLER_ENABLED=FALSE
    DIAG_DDE_ENABLED=FALSE
    

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

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

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