linux-l: XCept als debian source und binary !
Mathias Born
mborn at faphida.in-berlin.de
Di Sep 30 01:25:39 CEST 1997
On Mon, 29 Sep 1997, Stefan Bund wrote:
> Ich mu"ste die 2.0er sources ein bischen patchen, damit das Ding unter
> linux l"auft, aber jetzt geht's gut. Ich mu"ste allerdings eine
> Funktion mit #if 0 ... #endif "ausschalten", dadrin hat sich xcept
> immer mit SIGSEGV aufgeh"angt (aufruf von XDestroyImage(), und innerhalb
> XDestroyImmage ein free() aufruf).
>
> Wenn jmd. Ahnung von X-Toolkit programmierung hat, kann er sich ja mal
> "uber das SIGSEGV-Bug erbarmen, ich habe da keine Ahnung...
XDestroyImage gibt sowohl den Speicher frei, den die Bilddaten belegen,
als auch den Speicher, den die XImage-Struktur selbst belegt.
Wenn einer (oder beide) dieser Speicherbereiche vom Programm alloziert
wurden und nicht von Xlib, wird es hochwahrscheinlich zu einem
segmentation fault führen, wenn Xlib versucht, den Speicher freizugeben,
da nicht spezifiziert ist, welche Funktionen Xlib zur Speicherverwaltung
einsetzt. (Vermutlich malloc() und free(), man kann sich aber nicht darauf
verlassen! -> Quellen von Xlib ziehen und nachsehen :-)
Sollte der seg fault also daher rühren, hat das Programm einen Bug, den zu
beseitigen ein nicht zu unterschätzender Aufwand sein dürfte.
Man kann aber mit der Holzhammermethode vor XDestroyImage folgenden Code
setzen (angenommen image ist der Zeiger auf das Bild):
image->data = 0;
Der Speicher wird dann aber nicht freigegeben, sondern bleibt als Leiche
liegen!
Leider ist die Manipulation von Rasterbildern unter X sehr schlecht
dokumentiert.
Mathias
Mehr Informationen über die Mailingliste linux-l