On Thu, Mar 25, 2021 at 06:28:40PM +0100, Matthieu Herrb wrote: > On Wed, Mar 24, 2021 at 08:12:34PM -0300, Phillip Bushee wrote: > > I'm am writing a window manager which uses XpmCreateImageFromData(3) > > to read a .xpm file containing the theme of the decoration of the > > windows. The program segfaults when calling this function. I use this > > function rather than XpmCreatePixmapFromData(3) in order for me to get > > a pixel color from the .xpm with XGetPixel(3). > > Hi, > > I've the impression that this is happening because xa->valuemask is > being used unitialized in libXpm in the way you're calling it.
PS : I forgot to mention that this is mentionned in xpm.PS.gz page 14: NOTE: In any case the XpmAttributes valuemask must be set to some valid value, at least zero, otherwise unpredictable errors can occur. > > This seems to fix the crash for me: > > diff --git shod.c shod.c > index 5dcb450..26865d7 100644 > --- shod.c > +++ shod.c > @@ -467,6 +467,7 @@ settheme(void) > unsigned int i, j; > int status; > > + memset(&xa, 0, sizeof(xa)); > if (config.theme_path) /* if the we have specified a file, read it > instead */ > status = XpmReadFileToImage(dpy, config.theme_path, &img, NULL, > &xa); > else /* else use the default theme */ > > > > > This is the code of the window manager: > > https://github.com/phillbush/shod/blob/master/shod.c > > > > This is the .xpm I am reading: > > https://github.com/phillbush/shod/blob/master/theme.xpm > > > > This is what I get running the program under gdb. > > > > GNU gdb 6.3 > > Copyright 2004 Free Software Foundation, Inc. > > GDB is free software, covered by the GNU General Public License, and you > > are > > welcome to change it and/or distribute copies of it under certain > > conditions. > > Type "show copying" to see the conditions. > > There is absolutely no warranty for GDB. Type "show warranty" for > > details. > > This GDB was configured as "amd64-unknown-openbsd6.8"... > > (gdb) run > > Starting program: /home/phil/proj/shod/shod > > Error while reading shared library symbols: > > Dwarf Error: wrong version in compilation unit header (is 4, should be > > 2) > > [in module /usr/libexec/ld.so] > > Error while reading shared library symbols: > > Dwarf Error: wrong version in compilation unit header (is 4, should be > > 2) > > [in module /usr/libexec/ld.so] > > Error while reading shared library symbols: > > Dwarf Error: wrong version in compilation unit header (is 4, should be > > 2) > > [in module /usr/libexec/ld.so] > > Error while reading shared library symbols: > > Dwarf Error: wrong version in compilation unit header (is 4, should be > > 2) > > [in module /usr/libexec/ld.so] > > Error while reading shared library symbols: > > Dwarf Error: wrong version in compilation unit header (is 4, should be > > 2) > > [in module /usr/libexec/ld.so] > > > > Program received signal SIGSEGV, Segmentation fault. > > 0x00007f7fffff2600 in ?? () > > (gdb) bt > > #0 0x00007f7fffff2600 in ?? () > > #1 0x00000960a406b734 in SetColor () from /usr/X11R6/lib/libXpm.so.9.0 > > #2 0x00000960a4067ce6 in CreateColors () from > > /usr/X11R6/lib/libXpm.so.9.0 > > #3 0x00000960a4069916 in xpmParseDataAndCreate () from > > /usr/X11R6/lib/libXpm.so.9.0 > > #4 0x00000960a4065437 in XpmCreateImageFromData () from > > /usr/X11R6/lib/libXpm.so.9.0 > > #5 0x0000095e5e85f5db in settheme () at shod.c:473 > > #6 0x0000095e5e85bb58 in main () at shod.c:3465 > > > > I'm running OpenBSD Xenocara. > > This is what I get running `X -version`: > > > > X.Org X Server 1.20.8 > > X Protocol Version 11, Revision 0 > > Build Operating System: OpenBSD 6.8 amd64 > > Current Operating System: OpenBSD thinkbsd.my.domain 6.8 GENERIC.MP#5 > > amd64 > > Build Date: 24 November 2020 06:57:35AM > > > > Current version of pixman: 0.38.4 > > Before reporting problems, check http://wiki.x.org > > to make sure that you have the latest version. > > > > _______________________________________________ > > xorg@lists.x.org: X.Org support > > Archives: http://lists.freedesktop.org/archives/xorg > > Info: https://lists.x.org/mailman/listinfo/xorg > > Your subscription address: %(user_address)s > > -- > Matthieu Herrb -- Matthieu Herrb _______________________________________________ xorg@lists.x.org: X.Org support Archives: http://lists.freedesktop.org/archives/xorg Info: https://lists.x.org/mailman/listinfo/xorg Your subscription address: %(user_address)s