2.2.1{3,4,5pre*} VM bug found

Rik van Riel riel en nl.linux.org
Mar Ene 25 06:18:23 CST 2000


Hi Alan,

I've found the bug that makes the VM subsystem in the
latest 2.2 kernels go belly-up (or mess up processes).

Sometimes a process with tsk->state != TASK_RUNNABLE
calls __get_free_pages(). When we're (almost) out of
memory, the process will wake up kswapd and try to
free some memory itself.

In 2.2.15pre4 or when the call to try_to_free_pages()
generates disk I/O, the task will call schedule().
Since the task state != TASK_RUNNABLE, schedule() will
immedately remove it from the run queue ...

The task itself will still be somewhere `in the middle
of' __get_free_pages() and has no chance of ever
returning to whatever it was doing. Of course it still
reacts on signals, so you can easily kill it (unless
it happens to be your X server).

I will prepare a fix for this after I've had some
sleep ... you'll hear back from me tomorrow.

regards,

Rik
--
The Internet is not a network of computers. It is a network
of people. That is its real strength.


-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo en vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/



Más información sobre la lista de distribución Ayuda