malloc does not return null when out of memory

Barney Wolff barney at databus.com
Wed Jul 23 15:13:38 PDT 2003


On Wed, Jul 23, 2003 at 02:09:00PM -0700, Doug White wrote:
> On Wed, 23 Jul 2003, Gabor wrote:
> 
> > We have a little soekris box running freebsd that uses racoon for key
> > management.  It's used for setting up an ipsec tunnel.  I noticed that
> > one of these devices lost the tunnel this morning.  I looked in the
> > log and saw this
> >
> > Jul 23 01:37:57 m0n0wall /kernel: pid 80 (racoon), uid 0, was killed: out of swap space
> 
> [...]
> 
> > Here is the tail end of the output.  It dies when trying to poke at
> > the memory using memset.  If I just malloc without the memset, it
> > never even dies.
> 
> That's normal. If you malloc() memory and never touch it then it is never
> actually allocated.
> 
> Your problem is that you're running out of memory.  Try killing off
> unneeded daemons and set maxusers to a low value (like 32).  Also try
> reducing the size of your mfs partitions, if you're using rc.diskless2. I
> don't think raccoon is much of a memory pig, unless you have a huge number
> of connections.

Shouldn't malloc return 0 when out of memory rather than returning
an address that won't work?  I believe that was the complaint.  Presumably
having NO_SWAPPING has something to do with it, but filling the swap
might well do the same thing.

One might argue that this is a config error, and ulimit should be used
to cut the address space to below actually available memory.

-- 
Barney Wolff         http://www.databus.com/bwresume.pdf
I'm available by contract or FT, in the NYC metro area or via the 'Net.


More information about the freebsd-stable mailing list