Linux无法从应用程序创建核心转储

时间:2013-05-02 16:03:57

标签: linux coredump

我有两台运行供应商应用程序的服务器。在一台服务器上,如果应用程序崩溃,它会创建一个核心转储,但第二个却没有。

服务器应该设置相同,但我试图弄清楚为什么应用程序不会创建核心转储。我检查了所有典型的设置,并且一直在做研究而没有运气。

奇怪的是,如果我作为我的app用户运行kill -s SIGSEGV $$,它会在应用程序创建核心转储的同一目录中生成核心转储。供应商和Linux集团目前都不确定,这就是我在这里寻求帮助的原因。

$ cat /proc/sys/kernel/core_pattern
core

$ cat /proc/sys/kernal/core_uses_pid
1

$ ulimit -c
unlimited

$ cat /etc/security/limits.conf | grep core
*   soft    core    unlimited
*   hard    core    unlimited

$ cat /etc/profile | grep ulimit
ulimit -c unlimited > /dev/null 2>&1

$ cat /proc/sys/fs/suid_dumpable
0

$ cat /etc/sysconfig/init | grep CORE
DAEMON_COREFILE_LIMIT='unlimited'

1 个答案:

答案 0 :(得分:3)

为什么没有创建coredump可能还有其他几个原因。检查核心(5)中可能的原因列表:http://linux.die.net/man/5/core

检查dmesg输出。

检查/ proc / PID / limits中的特定进程corefile大小限制。

检查进程用户是否可以在/ proc / PID / cwd目录中创建典型coredump大小的文件。

在/ proc / sys / kernel / core_pattern中指定绝对文件路径,指向已知的可写位置。

根据核心(5)创建一个遵循coredump接受协议的短程序,将其保存在某处,并在/ proc / sys / kernel / core_pattern中指定它。用于节目的Coredumps不受限制。