Re: ssh Frage

From: Oliver Fromme <olli(at)lurza.secnetix.de>
Date: Fri, 19 Mar 2004 18:34:25 +0100 (CET)

Manfred Lotz <manfred.lotz(at)web.de> wrote:
> Oliver Fromme wrote:
> > Und wo wir gerade bei obskuren Dingen waren, gib mal fol-
> > gendes in eine normale FreeBSD-/bin/sh ein und warte ab,
> > was passiert:
> >
> > :(){ :;};:
>
> Verstanden hab ich nicht so ganz, was das macht.
>
> In der /bin/sh gibt's einen segmentation fault. In bash oder zsh schaukelt
> sich die cpu auf so ungefähr 90% hoch nach ungefähr 1,5 min Laufzeit.
> Die Speichernutzung schaukelt sich auch hoch. Nachdem ich bei über
> 110MB angelangt war, habe ich den Prozess gekillt.

Es ist einfach nur eine Endlosrekursion, die eine Funktion
mit dem Namen »:« definiert, die sich nur selbst wieder
aufruft.

Die Shell braucht dabei natürlich immer mehr Speicher für
ihren Stack, und früher oder später erreicht sie das ent-
sprechend eingestellte Limit (der Default ist 64 Mbyte),
woraufhin sie ein SIGSEGV erhält und stirbt.

Ich hab's gerade mal bei der FreeBSD-Bourne-Shell (/bin/sh
von 4.9-Release) und der zsh (4.0.6) verglichen.

Die /bin/sh stirbt schon nach wenigen Sekunden, wobei die
Core-Datei ca. 85 Mbyte große ist, und die zsh stirbt erst
nach 20 Minuten, wobei ihre Core-Datei fast doppelt so
groß ist. Daraus kann man ableiten, daß »unsere« /bin/sh
deutlich effizienter programmiert ist und weniger Overhead
hat -- zumindest soweit es Aufrufe von Shell-Funktionen be-
trifft. Ich vermute, daß die Anzahl der Rekursionen bei
der zsh maximal genauso groß war, eher aber deutlich klei-
ner. (Ich habe keinen einfachen Weg gefunden, sie zu zäh-
len, ohne damit das Ergebnis zu beeinflussen.)

Gruß
   Olli

-- 
Oliver Fromme, secnetix GmbH & Co KG, Oettingenstr. 2, 80538 München
Any opinions expressed in this message may be personal to the author
and may not necessarily reflect the opinions of secnetix in any way.
"The scanf() function is a large and complex beast that often does
something almost but not quite entirely unlike what you desired."
        -- Chris Torek
To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Fri 19 Mar 2004 - 18:34:58 CET

search this site