make -j problems - "fixed"

Bernd Schmidt (crux@pool.informatik.rwth-aachen.de)
Wed, 10 Apr 1996 10:47:48 +0200 (MET DST)


To repeat the problem: "make -j" starts generating GCC segfaults as soon as
there are more than about 30 processes on a 8MB machine. I'm still convinced my
hardware is OK (the problem happens with 1.3.80 even when all caches are off,
and 1.3.15 is OK with the caches on and DRAM timings at maximum), so I did a
little binary kernel version search yesterday. I found that the problem occurs
only with kernels >=1.3.59, while 1.3.15 and 1.3.58 are perfectly O.K.

I was able to narrow it down a little, and the following patch "fixes" the
problem. It simply turns off asynchronous swapping. I hope someone will be
able to fix this bug in a more efficient way.

diff -urd linux-1.3.85/mm/vmscan.c linux/mm/vmscan.c
--- linux-1.3.85/mm/vmscan.c Sat Apr 6 10:41:15 1996
+++ linux/mm/vmscan.c Wed Apr 10 00:00:05 1996
@@ -402,7 +402,7 @@
swapstats.wakeups++;
/* Do the background pageout: */
for (i=0; i < kswapd_ctl.maxpages; i++)
- try_to_free_page(GFP_KERNEL, 0, 0);
+ try_to_free_page(GFP_KERNEL, 0, 1);
}
}