[Pkg-gmagick-im-team] Bug#564123: missed SONAME transition for imagemagick libraries
Vincent Fourmond
fourmond at debian.org
Thu Jan 7 21:06:31 UTC 2010
Package: imagemagick
Version: 7:6.5.8.3-1
Severity: important
Hello, dear imagemagick maintainers !
I'm involved in packaging of rmagick, the Ruby bindings for
Imagemagick, and we are regularly hitting a nasty bug (currently
#557778), linked to the fact that the Ruby bindings check for the
exact version number of Imagemagick at runtime and fails if it does
not have a perfect match.
I initially thought that this was irrelevant on systems with dynamic
linkers and appropriately versioned, since if the SONAME does not
change, then there are no problems. However, upon checking if the Ruby
magick bindings built with 6.5.5 work with 6.5.7, Antonio Terceiro
<terceiro at softwarelivre.org> found that it would crash at runtime...
Upon closer examination, I found that there are lots of differences
between the 6.5.5 and 6.5.7 version (attached is a diff of the include
directory between both). There are many symbols missing, such as
DestroyDelegateList in ImageMagick/magick/delegate.h:
+++ version-6.5.7/usr/include/ImageMagick/magick/delegate.h 2009-11-17 21:07:22.000000000 +0100
@@ -62,12 +62,13 @@
GetDelegateMode(const DelegateInfo *);
extern MagickExport MagickBooleanType
+ DelegateComponentGenesis(void),
GetDelegateThreadSupport(const DelegateInfo *),
InvokeDelegate(ImageInfo *,Image *,const char *,const char *,ExceptionInfo *),
ListDelegateInfo(FILE *,ExceptionInfo *);
extern MagickExport void
- DestroyDelegateList(void);
+ DelegateComponentTerminus(void);
These would give missing symbols at runtime.
Worse:
+++ version-6.5.7/usr/include/ImageMagick/wand/magick-image.h 2009-11-17 21:07:22.000000000 +0100
@@ -191,7 +193,8 @@
MagickImportImagePixels(MagickWand *,const long,const long,
const unsigned long,const unsigned long,const char *,const StorageType,
const void *),
- MagickInverseFourierTransformImage(MagickWand *,const MagickBooleanType),
+ MagickInverseFourierTransformImage(MagickWand *,MagickWand *,
+ const MagickBooleanType),
MagickLabelImage(MagickWand *,const char *),
MagickLevelImage(MagickWand *,const double,const double,const double),
MagickLevelImageChannel(MagickWand *,const ChannelType,const double,
The function MagickInverseFourierTransformImage apparently now takes
an additional argument... This means segfaults/bus errors at runtime !
In short, you did miss a SONAME bump between 6.5.5 and 6.5.7 (this
might also be true for 6.5.7 and 6.5.8, but I'm less sure), since the
soversion only went from 2.0.0 to 2.0.1 between the two versions (it
should have been 3.0.0 in the newer version).
My guess is that this is the reason why rmagick upstream is checking
so tightly the version number at runtime, since it appears that the
imagemagick developers make incompatible ABI changes without SONAME
bumps.
I don't know what to do at present. Should the SONAME of imagemagick
libraries be bumped right now ? In any case, I would suggest not
trusting so much SONAME provided by upstream and checking yourself
binary compatibility. (a diff of the include dir of two successive
versions should be enough to check).
Many thanks, and sorry for bringing this up.
Vincent
-- System Information: Debian Release: squeeze/sid APT prefers
unstable APT policy: (500, 'unstable'), (500, 'testing'), (500,
'stable'), (1, 'experimental') Architecture: amd64 (x86_64)
Kernel: Linux 2.6.31-1-amd64 (SMP w/2 CPU cores)
Locale: LANG=en_GB, LC_CTYPE=en_GB (charmap=ISO-8859-1)
Shell: /bin/sh linked to /bin/dash
Versions of packages imagemagick depends on:
ii libbz2-1.0 1.0.5-3 high-quality block-sorting file co
ii libc6 2.10.2-4 Embedded GNU C Library: Shared lib
ii libfontconfig1 2.8.0-2 generic font configuration library
ii libfreetype6 2.3.11-1 FreeType 2 font engine, shared lib
ii libglib2.0-0 2.22.3-2 The GLib library of C routines
ii libgomp1 4.4.2-8 GCC OpenMP (GOMP) support library
ii libice6 2:1.0.6-1 X11 Inter-Client Exchange library
ii libjpeg62 6b-15 The Independent JPEG Group's JPEG
ii liblcms1 1.18.dfsg-1.1 Color management library
ii liblqr-1-0 0.4.1-1 converts plain array images into m
ii libltdl7 2.2.6b-2 A system independent dlopen wrappe
ii libmagickcore2 7:6.5.8.3-1 low-level image manipulation libra
ii libmagickwand2 7:6.5.8.3-1 image manipulation library
ii libsm6 2:1.1.1-1 X11 Session Management library
ii libtiff4 3.9.2-1 Tag Image File Format (TIFF) libra
ii libx11-6 2:1.3.2-1 X11 client-side library
ii libxext6 2:1.1.1-2 X11 miscellaneous extension librar
ii libxt6 1:1.0.7-1 X11 toolkit intrinsics library
ii zlib1g 1:1.2.3.4.dfsg-3 compression library - runtime
Versions of packages imagemagick recommends:
ii ghostscript 8.70~dfsg-2+b1 The GPL Ghostscript PostScript/PDF
ii libmagickcore2-extra 7:6.5.8.3-1 low-level image manipulation libra
ii netpbm 2:10.0-12 Graphics conversion tools
ii ufraw 0.16-1+b1 standalone importer for raw camera
Versions of packages imagemagick suggests:
pn autotrace <none> (no description available)
pn cups-bsd | lpr <none> (no description available)
ii curl 7.19.7-1 Get a file from an HTTP, HTTPS or
ii enscript 1.6.4-14 converts text to Postscript, HTML
ii ffmpeg 5:0.5+svn20100104-0.0 audio/video encoder, streaming ser
ii gimp 2.6.7-1.1 The GNU Image Manipulation Program
ii gnuplot 4.2.6-1 A command-line driven interactive
pn grads <none> (no description available)
ii groff-base 1.20.1-6 GNU troff text-formatting system (
pn hp2xx <none> (no description available)
pn html2ps <none> (no description available)
pn imagemagick-doc <none> (no description available)
ii libwmf-bin 0.2.8.4-6.1 Windows metafile conversion tools
ii mplayer 1:1.0.rc2svn20100104-0.1 The Ultimate Movie Player For Linu
pn povray <none> (no description available)
pn radiance <none> (no description available)
pn sane-utils <none> (no description available)
ii texlive-binarie 2009-5 Binaries for TeX Live
ii transfig 1:3.2.5.a-2 Utilities for converting XFig figu
ii xdg-utils 1.0.2-6.1 desktop integration utilities from
-- no debconf information
-------------- next part --------------
A non-text attachment was scrubbed...
Name: imagemagick-ABI-breakages.diff
Type: text/x-diff
Size: 93447 bytes
Desc: not available
URL: <http://lists.alioth.debian.org/pipermail/pkg-gmagick-im-team/attachments/20100107/2d0b9704/attachment-0001.diff>
More information about the Pkg-gmagick-im-team
mailing list