Re: Suche Debughilfe: child never returns from fork?

From: Bernd Walter <ticso(at)cicely12.cicely.de>
Date: Sun, 13 Apr 2008 20:08:26 +0200

On Sat, Apr 12, 2008 at 09:26:47PM +0000, Peter Much wrote:
> <de-bsd-questions(at)de.freebsd.org, ticso(at)cicely.de, pmc(at)citylink.dinoex.sub.org> aka Oliver Fromme schrieb
> mit Datum Fri, 11 Apr 2008 09:44:42 +0200 (CEST) in m2n.de.fbsd.questions:
>
> | > 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.
> |
> |Ganz genau. Es hängt halt von der jeweiligen malloc-
> |Implementation ab, ob es (zufällig) geht oder nicht.
> |Dass es auf einem bestimmten OS (z.B. Linux) verlässlich
> |geht, heißt noch lange nicht, dass es überall geht.
> |
> |Wenn ein Speicherbereich freigegeben wurde, dann ist
> |jeder Pointer, der noch darauf zeigt, ungültig, und
> |jeder Zugriff darauf ist illegal. Punkt.
>
> Nu ja, die Zeiten ändern sich...
> Als ich programmieren gelernt hab, da gab es noch sowas wie sbrk().

Das gibt es heute noch - wird in einigen malloc-Implementierungen auch
im Hintergrund benutzt, das ändert aber nicht das Problem.
Was du zurückgegeben hast ist nicht mehr in deiner Kontrolle.
Es ist Aufgabe von free damit zu machen, was es für richtig hält.
Da gibt es auch nichts zu diskutieren.
Wenn du es noch benutzen willst, dann gibt es eine sehr einfache Lösung:
Gebe es (noch) nicht frei.

-- 
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 Sun 13 Apr 2008 - 20:08:52 CEST

search this site