2004.07.10 17:56 "[Tiff] unintentional ABI change between 3.5 and 3.6?", by Jay Berkenbilt

2004.07.11 17:52 "Re: [Tiff] unintentional ABI change between 3.5 and 3.6?", by Jay Berkenbilt

Okay, sorry to keep flip-flopping, but I've found the bug, and I think the problem is an ABI change in libtiff after all.

gdk-pixbuf uses TIFFRGBAImage, which appears to be part of the public interface after all and is defined as typedef struct _TIFFRGBAImage TIFFRGBAImage;

It is very clear that gdk-pixbuf compiled with 3.5.7 and run with 3.6.1 has a segmentation fault inside of this call:

TIFFRGBAImageGet (&img, (uint32 *)pixels, width, height);

When compiled with 3.6.1 and run with 3.5.7, there is no segmentation fault, but it doesn't get the image data it wants.

This function is described in the libtiff manual page. This means that a chance to _TIFFRGBAImage *is* an ABI change that impacts the public interface, and an soname change was in order.

The debian problem is more complicated. The unstable release has had 3.6.1 for a long time, and gdk-pixbuf has long since been recompiled with 3.6.1. To resolve the problems in debian, I think we just have to bite the bullet and let there be an incompatibility. At this point, just rebuilding things that haven't yet been rebuilt seems less painful than rolling all these packages back. (I'll go into more depth when I post to the relevant debian lists.)

Anyway, I think this is pretty conclusive: the ABI did change, and the soname has to change. If you disagree, please let me know where I'm wrong. :-)

Thanks!

Jay Berkenbilt <ejb@ql.org>
http://www.ql.org/q/