Re: fork: out of memory

Andi Kleen (andi@zero.aec.at)
25 Jul 1997 01:27:45 +0200


Pavel Machek <pavel@Elf.mj.gts.cz> writes:

> Hi!
>
> Seems to me that newer kernel (2.1.46) have bad problems with above
> error... Is someone else experiencing this? It is bad when running cvs
> (in way export CVSROOT=localhost:/...), cvs can not fork sometimes and
> it is _bad_.

That's caused by the new two page kernel stack/current task struct
allocation. Every process needs two consecutive pages now
(get_free_pages(2)). When your memory fragments fork() often can't
find two consecutive pages anymore. Unfortunately do_fork() doesn't
try to call the swapper to free some pages or buffers and just return
-ENOMEM.

-Andi