[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: need explanation ulimit -c for limiting core dumps

From: Jason Roscoe
Subject: Re: need explanation ulimit -c for limiting core dumps
Date: Sat, 21 Oct 2006 02:20:51 -0400
User-agent: Thunderbird 1.5 (X11/20051201)

Mike Stroyan wrote:
I'm trying to limit the size of coredumps using 'ulimit -c'. Can someone please explain why a core file gets generated from the coretest program (source is below)?

Thanks for any help or suggestions.

Shell interaction
% ulimit -H -c
% ulimit -S -c
% bash --version
GNU bash, version 2.05b.0(1)-release (i386-pc-linux-gnu)
Copyright (C) 2002 Free Software Foundation, Inc.
% ulimit -c 512
% ulimit -S -c
% ulimit -H -c
% ./coretest 2048
rlim_cur,rlim_max = 524288,524288
malloced 2097152 bytes my pid is 21255
Segmentation fault (core dumped)
% ls -l core
-rw-------  1 jacr swdvt 2265088 2006-10-19 14:24 core


 This clearly is not a bash bug as your own program shows that getrlimit
reports the correct setting of 512K for RLIMIT_CORE.

This is a kernel surprise. The RLIMIT_CORE setting does not actually limit
the size of a core file as reported by "ls -l".  It limits the size of
the core file
on disk as reported by "du --si core".  Your coretest program used a large
malloc and did not actually touch the pages for that malloc.  So the core
dump created a sparse file with gaps at the pages that were never touched.
If you change "c=malloc(sz);" to "c=calloc(sz,1);" then you will see a core file that is not sparse at all. It will be reported as 512K bytes by both ls and du.
The RLIMIT_CORE effect for non-zero limits is to truncate large core
files rather
than prevent a core dump from happening.

 Sparse core files can cause trouble for the unwary.  They may become
non-sparse when copied.  That takes up more disk space.

Hi Mike,
Thanks for the explanation and suggestions regarding calloc() and 'du'. That clears things up for me. I was previously not familiar with "sparse" files. I've now modified the test program source and now I see the core file getting truncated as I originally expected.

Thanks again,

reply via email to

[Prev in Thread] Current Thread [Next in Thread]