Re: Suche Debughilfe: child never returns from fork?

From: Bernd Walter <ticso(at)cicely12.cicely.de>
Date: Fri, 11 Apr 2008 03:56:41 +0200

On Thu, Apr 10, 2008 at 09:09:29PM +0000, Peter Much wrote:
> <de-bsd-questions(at)de.freebsd.org, pmc(at)citylink.dinoex.sub.org> aka Oliver Fromme schrieb
> mit Datum Thu, 10 Apr 2008 16:23:52 +0200 (CEST) in m2n.de.fbsd.questions:
>
> |Öhm ... Bacula mag von der Theorie her gut sein, aber
> |die praktische Umsetzung hat schon gewisse Haken.
>
> Ja, so unterschreib ich das. :)
>
> | > Dann hab ich im Code gesucht und finde ein Konstrukt dieser Art:
> | > while(c = next(c)) free(c);
> |
> |Da kräuseln sich jedem C-Programmierer die Zehennägel.
>
> Hm? Ich dachte, man darf das an sich schon so machen, solange man
> sicherstellen kann, dass zwischen dem free() und dem "next" kein
> alloc() passiert? (Was natürlich dann wieder solche Sachen wie
> sighandler ernstlich in frage stellt...)

Nein - der free könnte ja z.B. dadurch eine komplette Speicherseite
freigeräumt haben und hat den physikalischen Speicher dann brav an
den Kernel zurück gegeben.
Der nächste Zugriff wäre dann ein logischerweise ein segfault.

> |Übrigens bin ich der Meinung, dass Signal-Handler für SIG-
> |SEGV in mindestens 90% der Fälle vollkommen überflüssig
> |und sogar eher schädlich sind.
>
> Sehe ich eigentlich auch so. Werde wahrscheinlich dazu übergehen
> diese Dinger wegzulassen.

Besser ist das.
Du brauchst im Regelfall höchsten ein paar Handler.
Der klassische Bedarf ist für SIGCHLD und SIGPIPE.
SIGCHLD sollte man, wenn man es wirklich selber machen muss, auch sauber
programmieren - da gibt es Lieteratur, die man gelesen haben sollte, um
das richtig zu machen - ausprobieren bringt da nichts.
SIGPIPE braucht man in der Regel blos abzufangen und nichts weiter zu
tun.
Der Rest ist meistens Unsinn.

-- 
B.Walter <bernd@bwct.de> http://www.bwct.de
Modbus/TCP Ethernet I/O Baugruppen, ARM basierte FreeBSD Rechner uvm.
To Unsubscribe: send mail to majordomo(at)de.FreeBSD.org
with "unsubscribe de-bsd-questions" in the body of the message
Received on Fri 11 Apr 2008 - 03:57:04 CEST

search this site