Graceful failure instead of panicking in kmem_malloc

Kris Kennaway kris at FreeBSD.org
Tue Jan 8 16:30:25 PST 2008


Bharma Ji wrote:
> In FreeBSD 6_2, if kmem_malloc is unable to find space it panics. The
> relevant code is in vm_kern.c
>   if ((flags & M_NOWAIT) == 0)
>                          panic("kmem_malloc(%ld): kmem_map too small: %ld
> total allocated",
>                                 (long)size, (long)map->size);
> 
> Is there any way to make the system log and then gracefully shut off instead
> of panicking?

Not really, because those actions require memory allocation.  The real 
fix is to either

a) avoid running out of memory in the first place by tuning vm.kmem_size

b) perhaps trying harder to avoid panicking by first trying to more 
aggressively reclaim memory.

You can try

   http://www.freebsd.org/~pjd/patches/vm_kern.c.2.patch

which implements b) (patch against 7.0, but might apply to 6.2 unchanged).

Kris


More information about the freebsd-hackers mailing list