【发布时间】:2015-02-11 08:01:49
【问题描述】:
我有一个 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 link,其中堆栈相似但不一样,但仍然没有明确的答案
- Link 谈论 orable bug,是不是同样的问题?
【问题讨论】:
-
代码中的某些内容称为 abort - 这通常是当应用程序遇到断言或其他程序员认为“这不应该发生的情况,我最好在出现更多错误之前停止”的情况。通常这是通过向 stderr 或 stdout 发送合适的消息来完成的,说“哎呀,我没想到 X > 1000”或类似的东西。
-
@Mats Petersson 我无法在跟踪中看到任何“中止”调用。
-
上面写着“信号6”,这就是Linux中止信号...
-
@MatsPetersson 我检查了 va/log/messages 没有带有 -6 的 kill 命令,我还检查了历史记录我没有找到 kill -6。
-
不,它可能是程序本身发出的。我在您的日志中看到您提供了“程序以信号 6 终止,已中止”。 - 当然,我不知道这是怎么发生的,但它可能不会在 /var/log/messages 中 - 只会有内核发出的信号,而不是一次在应用程序中引起的。