[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: bash: fork: Resource temporarily unavailable



On Sun, 08 Sep 2002 12:19:21 PDT, Alex Withers writes:
>On Sun, 8 Sep 2002, Nicos Gollan wrote:
>As it turns out that was it, in a way.  I had a line in my .bashrc that
>went like so:  PAGER=`which less`.  For some reason this would cause a
>momentary explosion in the number of "which" processes.  They would
>disappear in a few seconds and I would then get the vague error message.
>I don't know why this caused the problem as $PAGER looked fine after the
>hiccup.  But it solved the problem when I removed the problem line...

Of course, this makes sense.  When you run a command in backquotes, that
will start a new instance of bash to run that command.  And the new bash
you start will read and execute .bashrc.  Which will start a new bash,
to evaluate the "which less".  This new bash will execute .bashrc,
which tries to evaluate "which less", which starts a new bash shell,
which .... I'm sure you get the idea.

You have essentially created what's called a recursive "fork bomb".
Fortunately, this design of fork bomb stops as soon as it runs out of
process slots.

You can fix the problem (I expect) like this:

# At start of your .bashrc
if [ -n "$BASH_INITIALIZED" ]
then
    export BASH_INITIALIZED=yep

    # all your env variable stuff goes here, including
    export PAGER=`which less`;

fi

    --- Wade



Reply to: