linux-l: XDestroyImage SIGSEGV (Was: XCept als debian source und binary !)

Stefan Bund bund at bund.dialup.fu-berlin.de
Do Okt 2 12:28:04 CEST 1997


> 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.

DAS war der Fehler. Zum Gl"uck nicht allzu schwierig zu erkennen:

   static char data[FONT_HEIGHT*2*2*FONT_WIDTH*2*2];
 +-------------^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 |
 | [...]
 |
 | image = XCreateImage(dpy, DefaultVisual(dpy, scr), DefaultDepth(dpy, scr),
 |			ZPixmap, 0, (char *) data, xzoom*FONT_WIDTH,
 +----------------------------------^^^^^^^^^^^^^^
			yzoom*FONT_HEIGHT, 8, 0);

Da der Speicherberich f"ur die Daten anscheinend statisch alloziert wird,
brauche ich ihn nicht freizugeben.

> 
> 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!

Genau so habe ich's gemacht, und so funktionierts auch pr"achtig. Es
sollten auch keine Speicherleichen "ubrig bleiben, da der Speicher ja
statisch alloziert wird.

Was soll das eigendlich von X, das der sich nicht merkt, das der
Speicher vom anwender alloziert wurde ... GrmmmlGrmpf...

Danke und Tsch"u"s,

Stefan.

PS: Das xcept_2.0-2_i386.deb Paket ist jetzt allso vollst"andig (aber
warscheinlich ein schlechtes Debian Paket da ich keine Ahnung von
debianpaketen (bis jetzt) :-) )

PPS: Es gibt nat"urlich auch ein source-Paket ...

-- 
                                    @ @
 -------------------------------oOO-(_)-OOo---------------------------
 Stefan Bund, student of physics at Freie Universitaet Berlin, Germany

 email: bund at zedat.fu-berlin.de        ( or bund at physik.fu-berlin.de )
        bund at berlin.cid-net.de
 ---------------------------------------------------------------------
 




Mehr Informationen über die Mailingliste linux-l