On Fri, Dec 10, 2010 at 11:25 AM, Diggory Hardy <diggory.ha...@unibas.ch> wrote: > On Thursday 09 December 2010 Pierre Gaston wrote: >> On Wed, Dec 8, 2010 at 11:15 AM, Diggory Hardy <diggory.ha...@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.