Coredump正在被截断

我正在设置

ulimit -c unlimited. 

而在c + +程序中,我们正在做的

 struct rlimit corelimit; if (getrlimit(RLIMIT_CORE, &corelimit) != 0) { return -1; } corelimit.rlim_cur = RLIM_INFINITY; corelimit.rlim_max = RLIM_INFINITY; if (setrlimit(RLIMIT_CORE, &corelimit) != 0) { return -1; } 

但每当程序崩溃,它所产生的核心转储正在被截断。

 BFD: Warning: /mnt/coredump/core.6685.1325912972 is truncated: expected core file size >= 1136525312, found: 638976. 

可能是什么问题?

我们正在使用Ubuntu 10.04.3 LTS

 Linux ip-<ip> 2.6.32-318-ec2 #38-Ubuntu SMP Thu Sep 1 18:09:30 UTC 2011 x86_64 GNU/Linux 

这是我的/etc/security/limits.conf

 # /etc/security/limits.conf # #Each line describes a limit for a user in the form: # #<domain> <type> <item> <value> # #Where: #<domain> can be: # - an user name # - a group name, with @group syntax # - the wildcard *, for default entry # - the wildcard %, can be also used with %group syntax, # for maxlogin limit # - NOTE: group and wildcard limits are not applied to root. # To apply a limit to the root user, <domain> must be # the literal username root. # #<type> can have the two values: # - "soft" for enforcing the soft limits # - "hard" for enforcing hard limits # #<item> can be one of the following: # - core - limits the core file size (KB) # - data - max data size (KB) # - fsize - maximum filesize (KB) # - memlock - max locked-in-memory address space (KB) # - nofile - max number of open files # - rss - max resident set size (KB) # - stack - max stack size (KB) # - cpu - max CPU time (MIN) # - nproc - max number of processes # - as - address space limit (KB) # - maxlogins - max number of logins for this user # - maxsyslogins - max number of logins on the system # - priority - the priority to run user process with # - locks - max number of file locks the user can hold # - sigpending - max number of pending signals # - msgqueue - max memory used by POSIX message queues (bytes) # - nice - max nice priority allowed to raise to values: [-20, 19] # - rtprio - max realtime priority # - chroot - change root to directory (Debian-specific) # #<domain> <type> <item> <value> # #* soft core 0 #root hard core 100000 #* hard rss 10000 #@student hard nproc 20 #@faculty soft nproc 20 #@faculty hard nproc 50 #ftp hard nproc 0 # ftp - chroot /ftp #@student - maxlogins 4 #for all users * hard nofile 16384 * soft nofile 9000 

更多细节

我正在使用gcc优化标志

 O3 

我正在设置堆栈线程大小为.5 mb

Solutions Collecting From Web of "Coredump正在被截断"

我记得有一个硬限制,可以由管理员设置,以及由用户设置的软限制。 如果软限制比硬限制更强,则取硬限制值。 我不确定这是否对任何外壳有效,但我只知道它从bash。

我的核心文件被截断的问题也一样。

进一步的调查显示, ulimit -f (aka file sizeRLIMIT_FSIZE )也影响核心文件,所以检查限制也是无限的/适当的高。 [我在Linux内核3.2.0 / debian wheezy上看到了这个。]

硬限制和软限制对它们有一些细节,可能有点毛病:请参阅使用sysctl命名最后更改的内容。

有一个文件,你可以编辑应该使极限大小最后,虽然可能有一个相应的sysctl命令,将这样做…

当我用kill -3手动杀死程序时发生了类似的问题。 这只是因为我没有等待足够的时间来完成核心文件的生成。

确保文件大小停止增长,然后才打开它。