Index: sys/vm/vm_pageout.h =================================================================== --- sys/vm/vm_pageout.h +++ sys/vm/vm_pageout.h @@ -81,6 +81,7 @@ #define VM_OOM_MEM 1 #define VM_OOM_MEM_PF 2 #define VM_OOM_SWAPZ 3 +#define VM_OOM_MAX 4 /* * vm_lowmem flags. Index: sys/vm/vm_pageout.c =================================================================== --- sys/vm/vm_pageout.c +++ sys/vm/vm_pageout.c @@ -1901,6 +1901,7 @@ void vm_pageout_oom(int shortage) { + const char *reason; struct proc *p, *bigproc; vm_offset_t size, bigsize; struct thread *td; @@ -2013,11 +2014,25 @@ } } sx_sunlock(&allproc_lock); + if (bigproc != NULL) { + switch (shortage) { + case VM_OOM_MEM: + reason = "failed to reclaim memory"; + break; + case VM_OOM_MEM_PF: + reason = "waited too long to allocate a page"; + break; + case VM_OOM_SWAPZ: + reason = "out of swap space"; + break; + default: + panic("unknown OOM reason %d", shortage); + } if (vm_panic_on_oom != 0 && --vm_panic_on_oom == 0) - panic("out of swap space"); + panic("%s", reason); PROC_LOCK(bigproc); - killproc(bigproc, "out of swap space"); + killproc(bigproc, reason); sched_nice(bigproc, PRIO_MIN); _PRELE(bigproc); PROC_UNLOCK(bigproc);