[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Recursively calling a bash script goes undetected and eats all syste
From: |
Pierre Gaston |
Subject: |
Re: Recursively calling a bash script goes undetected and eats all system memory |
Date: |
Fri, 10 Dec 2010 12:19:41 +0200 |
On Fri, Dec 10, 2010 at 11:25 AM, Diggory Hardy <diggory.hardy@unibas.ch> wrote:
> On Thursday 09 December 2010 Pierre Gaston wrote:
>> On Wed, Dec 8, 2010 at 11:15 AM, Diggory Hardy <diggory.hardy@unibas.ch>
>> wrote:
>> > Hello,
>> >
>> > With a simple script such as that below, bash can enter an infinite loop
>> > of eating memory until the system is rendered unusable:
>> >
>> > #!/bin/bash
>> > PATH=~
>> > infinitely-recurse
>> >
>> > Save this as infinitely-recurse in your home directory and run - and make
>> > sure you kill it pretty quick. OK, so an obvious bug when put like this,
>> > though it bit me recently (mistakenly using PATH as an ordinary variable
>> > and having a script with the same name as a system program). Would it not
>> > be simple to add some kind of protection against this — say don't let a
>> > script call itself more than 100 times?
>> >
>> > Thanks,
>> > Diggory
>> >
>> Well, I'm not a big fan of the technique, but out there I see a lot of
>> wrapper scripts calling themselves to automatically restart an
>> application.
>>
> Uh. Then over time it is legitimate to have a script recursively call itself
> a few thousand times with each instance still in memory?
Well they use exec to avoid that.
> The potential to grind the system to a complete halt is pretty serious
> though. Perhaps the ideal solution would be to have the kernel intervene
> before it starts thrashing memory, but that doesn't seem to happen.
Sure, but you can do that with pretty much any tools available.
Re: Recursively calling a bash script goes undetected and eats all system memory, Marc Herbert, 2010/12/10