If your using distcc, have multiple processors, etc. be very careful
with using the '-j' option without a number in the MAKEOPTS variable.

I recently did an update of glibc to glibc-2.3.2-r3 and after a while of
compiling my system was freezing.  I would start the emerge process and
walk away because I knew it would take a while.  When I came back to the
system later on, the drive light was lit solid and would not shut off. 
The system would also not respond to user input even though I could
switch from VT to VT.  Everything I saw happening pointed to a drive
failing only part of the time.

It took me a while to figure out what was going on but I started the
emerge process on one VT and sat there a watched it.  On another VT, I
used watch to periodically display the disk usage, as well as, the
output of vmstat.  Pretty soon I found out what was going on.

The system started to slow to a crawl and I happened to look at the
process table.  There were upward of 870 process running on my box
during the compile.  Ouch!

Essentially, I was slowly fork bombing my box because I was using the
'-j' option without a number in MAKEOPTS.  The man page for make states,
"If the -j option is given without an argument, make will not limit the
number of jobs that can run simultaneously."  With most packages this is
not a problem but, in the case of glibc, the source directory has
several components to compile and there were enough components that it
was bringing my system down.

Therefore, if you find your system freezing during a emerge like mine
did, check your MAKEOPTS.


Steven Elling


P.S. Developers: You might want to look into adding a number to the '-j'
option in MAKEOPTS during emerges of certain packages to account for
this situation.


--
[EMAIL PROTECTED] mailing list

Reply via email to