core dump 的原因是什么?来自 oracle lib 的堆栈显示

问题描述 投票:0回答:1

我有一个 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 错误,这是同一个问题吗?

c++ oracle11g coredump
1个回答
10
投票

看起来这是 Oracle 11g 上的问题。

  1. 从 Oracle 11g 开始,默认情况下打开诊断存储库。自动诊断存储库 (ADR) 参数如
    DIAG_SIGHANDLER_ENABLED
    DIAG_ADR_ENABLED
    DIAG_DDE_ENABLED
    等主要在 SQLNET.ORA 中设置。

拥有

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

  1. 要关闭信号处理程序并重新启用标准操作系统故障处理,请将以下参数设置放置在 $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 中进行设置后重新启动应用程序。

  1. 关闭 ADR 参数不会对您的应用程序或数据库造成影响。
© www.soinside.com 2019 - 2024. All rights reserved.