2.0.27 dont kill process when out of memory

Jose Carlos Benfati (benfati@uninet.com.br)
Tue, 31 Dec 1996 17:59:21 -0200 (EDT)


Today I got some messages in the ring buffer (dmesg):

Out of memory for pine.

Out of memory for klogd.

Out of memory for pine.

Out of memory for pine.

Out of memory for pine.

Out of memory for pine.

Out of memory for bash.
Unable to load interpreter

Out of memory for pine.

Out of memory for pine.

Out of memory for pine.

Out of memory for init.

and lots of those repeated.

This was probably when I was trying to use pine to read a BIG folder and
both ram and swap exausted.
The problem is that by the time I noticed the problem, I used the quit
command in pine to quit (it worked) so I suspect that the following code:
/*
* oom() prints a message (so that the user knows why the process died),
* and gives the process an untrappable SIGKILL.
*/
void oom(struct task_struct * task)
{
printk("\nOut of memory for %s.\n", task->comm);
task->sig->action[SIGKILL-1].sa_handler = NULL;
task->blocked &= ~(1<<(SIGKILL-1));
send_sig(SIGKILL,task,1);
}

in mm/memory.c could be failing to kill pine somewhat. Note that the klogd
daemon was correctly killed (that's why I don't have the timestamps for
the printk's above...).

btw, shouldn't the printk line have a priority indicator?

Does anybody have a hint? Need more information? Please reply also
directly, since I only read the digest.

Happy new year!!!

bye.