[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