bug-bash
[Top][All Lists]
Advanced

[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.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]