[Xastir] GraphicsMagick include issue on Gentoo
Tom Russo
russo at bogodyn.org
Sun Jun 30 18:03:16 PDT 2019
It appears that the call to DestroyImagePixels, which is supposed to
deallocate memory associated with the pixel cache, was added to Xastir
as part of an effort to "release memory consistently for exit points" in
commit 4210671c3 from 2007, but it may be inappropriately used here.
It appears it was an attempt to free any memory created by GetImagePixels,
but this does not look like it was supposed to be correct way to do that
(in fact, one is not supposed to do it directly). DestroyImagePixels
is only supposed to be called by the DestroyImage function, which is public.
The function "draw_geo_image_map" (which is a huge function) has many, many
exit points, and it appears that almost all of them correctly call
DestroyImage on the image anyway. So this call to DestroyImagePixels
certainly improper and should never have been put where it is.
I am removing the function call and the kludge that made us include
private declarations. Watch for the fix in a git push soon.
On Sun, Jun 30, 2019 at 06:37:12PM -0600, we recorded a bogon-computron collision of the <russo at bogodyn.org> flavor, containing:
> On Sun, Jun 30, 2019 at 06:32:31PM -0600, we recorded a bogon-computron collision of the <russo at bogodyn.org> flavor, containing:
> > Lo, and behold, on June 20th, the GraphicsMagick package on my system was
> > updated to 1.3.32, and I had last built Xastir with the previous version,
> > 1.3.31. Today, building Xastir crashes with the same error you get.
> >
> > I will look into whether it is still necessary to have MAGICK_IMPLEMENTATION
> > defined. Taking it out is supposed to fix the compilation error, but I have
> > no idea if it preserves the function of map_geo.c.
>
> Removing the MAGICK_IMPLEMENTATION definition does indeed allow us to compile,
> but reintroduces the very warning this definition was put in place to silence.
>
> We'll simply need to figure out why DestroyImagePixels ever needed to be called,
> and replace it with whatever non-private function should be called instead.
>
> In the meantime, you can probably get by by just commenting out line 136 of
> map_geo.c, which is "#define MAGICK_IMPLEMENTATION". You will get a warning
> about an implicit declaration of DestroyImagePixels, but it should at least
> let you compile.
>
> I'm googling like mad to figure out what DestroyImagePixels does and trying
> to figure out why it needs to be called by Xastir at all.
>
> > On Sun, Jun 30, 2019 at 06:26:07PM -0600, we recorded a bogon-computron collision of the <russo at bogodyn.org> flavor, containing:
> > > Other OSen are experiencing this:
> > >
> > > https://bugzilla.redhat.com/show_bug.cgi?id=1722840
> > > https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=924329#18
> > >
> > > The problem is that Xastir's map_geo.c is defining "MAGICK_IMPLEMENTATION" in
> > > order to (inappropriately) access private interfaces, which the version of
> > > Magick you have has in fact moved to a private header that is no longer
> > > installed with the package.
> > >
> > > Apparently this hack was added in 2010 to Xastir to silence warnings about
> > > misuse of private interfaces, instead of removing the use of DestroyImagePixels.
> > >
> > > Some work will have to be done to figure out *why* DestroyImagePixels was
> > > being used in map_geo.c, and to replace it with calls to public interfaces
> > > of Magick.
> > >
> > > On Sun, Jun 30, 2019 at 04:12:27PM -0700, we recorded a bogon-computron collision of the <davidf4 at mindspring.com> flavor, containing:
> > > > Hello All,
> > > >
> > > > I just did a git pull, bootstrap, configure, make clean, and make on my 32
> > > > bit Gentoo VM (and my 64 bit VM so not byte size dependent)..... and now my
> > > > compiles fail with:
> > > >
> > > > CC map_geo.o
> > > > In file included from /usr/include/GraphicsMagick/magick/analyze.h:18,
> > > > from /usr/include/GraphicsMagick/magick/api.h:55,
> > > > from map_geo.c:137:
> > > > /usr/include/GraphicsMagick/magick/image.h:1108:10: fatal error:
> > > > magick/image-private.h: No such file or directory
> > > > #include "magick/image-private.h"
> > > > ^~~~~~~~~~~~~~~~~~~~~~~~
> > > > compilation terminated.
> > > > make[3]: *** [Makefile:634: map_geo.o] Error 1
> > > > make[3]: Leaving directory '/home/dflood/src/Xastir/src'
> > > > make[2]: *** [Makefile:656: all-recursive] Error 1
> > > > make[2]: Leaving directory '/home/dflood/src/Xastir/src'
> > > > make[1]: *** [Makefile:744: all-recursive] Error 1
> > > > make[1]: Leaving directory '/home/dflood/src/Xastir'
> > > > make: *** [Makefile:426: all] Error 2
> > > >
> > > > Here's what ./configure tells me:
> > > >
> > > > xastir 2.1.3 has been configured to use the following
> > > > options and external libraries:
> > > >
> > > > MINIMUM OPTIONS:
> > > > ShapeLib (Vector maps) .................... : yes
> > > >
> > > > RECOMMENDED OPTIONS:
> > > > Xpm / Snapshots ........................... : yes
> > > > GraphicsMagick/ImageMagick (Raster maps) .. : yes (GraphicsMagick)
> > > > pcre (Shapefile customization) ............ : yes
> > > > dbfawk (Shapefile customization) .......... : yes
> > > > Berkeley DB map caching-Raster map speedups : yes
> > > > internet map retrieval .................... : yes (libcurl)
> > > >
> > > > FOR THE ADVENTUROUS:
> > > > AX25 (Linux Kernel I/O Drivers) ........... : no
> > > > libproj (USGS Topos & Aerial Photos) ...... : yes
> > > > GeoTiff (USGS Topos & Aerial Photos) ...... : yes
> > > > Festival (Text-to-speech) ................. : no
> > > > GPSMan/gpsmanshp (GPS downloads) .......... : no
> > > >
> > > > xastir will be installed in /usr/local/bin.
> > > >
> > > > Here's my output of gm -version
> > > >
> > > > GraphicsMagick 1.3.32 2019-06-15 Q8 http://www.GraphicsMagick.org/
> > > > Copyright (C) 2002-2019 GraphicsMagick Group.
> > > > Additional copyrights and licenses apply to this software.
> > > > See http://www.GraphicsMagick.org/www/Copyright.html for details.
> > > >
> > > > Feature Support:
> > > > Native Thread Safe no
> > > > Large Files (> 32 bit) yes
> > > > Large Memory (> 32 bit) no
> > > > BZIP yes
> > > > DPS no
> > > > FlashPix no
> > > > FreeType yes
> > > > Ghostscript (Library) no
> > > > JBIG no
> > > > JPEG-2000 no
> > > > JPEG yes
> > > > Little CMS yes
> > > > Loadable Modules no
> > > > Solaris mtmalloc no
> > > > OpenMP yes (201511 "4.5")
> > > > PNG yes
> > > > TIFF yes
> > > > TRIO no
> > > > Solaris umem no
> > > > WebP no
> > > > WMF no
> > > > X11 yes
> > > > XML yes
> > > > ZLIB yes
> > > >
> > > > Host type: i686-pc-linux-gnu
> > > >
> > > > Configured using the command:
> > > > ./configure '--prefix=/usr' '--build=i686-pc-linux-gnu'
> > > > '--host=i686-pc-linux-gnu' '--mandir=/usr/share/man'
> > > > '--infodir=/usr/share/info' '--datadir=/usr/share' '--sysconfdir=/etc'
> > > > '--localstatedir=/var/lib' '--disable-dependency-tracking'
> > > > '--disable-silent-rules' '--docdir=/usr/share/doc/graphicsmagick-1.3.32'
> > > > '--htmldir=/usr/share/doc/graphicsmagick-1.3.32/html' '--with-sysroot=/'
> > > > '--libdir=/usr/lib' '--enable-openmp' '--enable-largefile' '--enable-shared'
> > > > '--disable-static' '--disable-prof' '--disable-gcov'
> > > > '--disable-magick-compat' '--without-threads' '--without-modules'
> > > > '--with-quantum-depth=8' '--without-frozenpaths' '--with-magick-plus-plus'
> > > > '--with-perl' '--with-perl-options=INSTALLDIRS=vendor' '--with-bzlib'
> > > > '--without-dps' '--without-fpx' '--without-jbig' '--without-webp'
> > > > '--with-jpeg' '--without-jp2' '--with-lcms2' '--without-lzma' '--with-png'
> > > > '--with-tiff' '--with-ttf' '--without-wmf'
> > > > '--with-fontpath=/usr/share/fonts'
> > > > '--with-gs-font-dir=/usr/share/fonts/urw-fonts'
> > > > '--with-windows-font-dir=/usr/
> > > >
> > > > Final Build Parameters:
> > > > CC = i686-pc-linux-gnu-gcc
> > > > CFLAGS = -fopenmp -O2 -march=i686 -pipe -Wall
> > > > CPPFLAGS = -I/usr/include/freetype2 -I/usr/include/libxml2
> > > > CXX = i686-pc-linux-gnu-g++
> > > > CXXFLAGS = -O2 -march=i686 -pipe
> > > > LDFLAGS = -Wl,-O1 -Wl,--as-needed
> > > > LIBS = -llcms2 -ltiff -lfreetype -ljpeg -lpng16 -lXext -lSM -lICE
> > > > -lX11 -lbz2 -lxml2 -lz -lm
> > > >
> > > > I did find a ref to this error and Xastir in one of the Debian email lists
> > > > from March...
> > > >
> > > > http://debian.2.n7.nabble.com/Re-Bug-924329-xastir-FTBFS-magick-image-privat
> > > > e-h-No-such-file-or-directory-td4492878.html
> > > >
> > > > David Flood
> > > > KD7MYC
> > > >
> > > >
> > > >
> > > >
> > > > _______________________________________________
> > > > Xastir mailing list
> > > > Xastir at lists.xastir.org
> > > > http://xastir.org/mailman/listinfo/xastir
> > >
> > > --
> > > Tom Russo KM5VY
> > > Tijeras, NM
> > >
> > > echo "prpv_a'rfg_cnf_har_cvcr" | sed -e 's/_/ /g' | tr [a-m][n-z] [n-z][a-m]
> > >
> > > _______________________________________________
> > > Xastir mailing list
> > > Xastir at lists.xastir.org
> > > http://xastir.org/mailman/listinfo/xastir
> >
> > --
> > Tom Russo KM5VY
> > Tijeras, NM
> >
> > echo "prpv_a'rfg_cnf_har_cvcr" | sed -e 's/_/ /g' | tr [a-m][n-z] [n-z][a-m]
> >
> > _______________________________________________
> > Xastir mailing list
> > Xastir at lists.xastir.org
> > http://xastir.org/mailman/listinfo/xastir
>
> --
> Tom Russo KM5VY
> Tijeras, NM
>
> echo "prpv_a'rfg_cnf_har_cvcr" | sed -e 's/_/ /g' | tr [a-m][n-z] [n-z][a-m]
>
> _______________________________________________
> Xastir mailing list
> Xastir at lists.xastir.org
> http://xastir.org/mailman/listinfo/xastir
--
Tom Russo KM5VY
Tijeras, NM
echo "prpv_a'rfg_cnf_har_cvcr" | sed -e 's/_/ /g' | tr [a-m][n-z] [n-z][a-m]
More information about the Xastir
mailing list