Moin, Ich arbeite an einem Script, welches in einer Schleife etliche verschiedene Fonts verwendet, um per ImageMagick einen Text in ein Bild zu schreiben. Da auch mal ein Font kaputt ist oder ImageMagick einen Bug hat oder oder oder... kann es sein, daß IM dabei einen Speicherzugriffsfehler erzeugt. Den will und muß ich abfangen (Andere Lösungen wie das Entfernen des kaputten Fonts sind nciht möglich, das zu erklären würde zu weit führen) Also, Pseudocode, was ich habe: foreach $schrift (@schriften) { $bild=generiere_preview($schrift); mach_was_mit($bild); } sub generiere_preview($name) { $bild=mache_bild_aus_schrift($name); return $bild } Wenn auch nur eine Schrift kaputt ist: Bumm. Was ich bräuchte, wäre: sub generiere_preview($name) { $SEGFAULTS='egal'; $bild=mache_bild_aus_schrift($name); $SEGFAULTS='wieder beachten'; if($error) { return false; } else { return $bild; } } Ich habe mit fork() rumhantiert, aber nichts vernünftiges hinbekommen. Ich habe sowas probiert: $SIG{'SEGV'} = 'IGNORE'; $img->Annotate( x => 128, y => 128+256, pointsize => 256, font => $filename, text => $text ); } $SIG{'SEGV'} = 'DEFAULT'; Das bricht aber trotzdem ab, und zwar ziemlich chaotisch - mal geht eine Datei, mal nicht. Ein anderer Versuch: eval { local $SIG{'__DIE__'}; Annotate... }; Ebenfalls unberechenbar. Ich habe zu Testzwecken die dicke Kanone rausgeholt und alle Signale geblockt: foreach my $i (keys(%SIG)) { $SIG{$i} = 'IGNORE'; } Ne, ne, ne. Geht nicht. Das Problem ist wohl, daß ein SegFault ein ziemlicher Hammer ist und die beteiligten Prozesse reichlich verwirrt zurücklässt. Ich habe den Eindruck, daß eigentlich fork'en der richtige Weg wäre. Wenn die geforkte Version absemmelt, macht das Original weiter, ansonsten wird das Original beendet und die Kopie mit den ermittelten Daten läuft weiter. Genau das bekomme ich aber nicht hin. Ich habe eine Variante, die eine Datei schreibt und dann "so oder so" beendet, das geht aber in diesem Fall nicht, ich brauche eine "sub", die "so oder so" etwas returniert, entweder das Preview oder ein false, aber nie ganz wegbricht. Ich habe die perl-doku zu forks, Zwischenprozess-Kommunikation und pipes gelesen, nur ein bisschen begriffen und müsste jetzt mal ein bisschen in die richtige Richtung gedreht werden. :-) Gruß, Ratti -- -o) fontlinge | Font management for Linux | Schriftenverwaltung in Linux /\\ http://freshmeat.net/projects/fontlinge/ _\_V http://www.gesindel.de https://sourceforge.net/projects/fontlinge/