Comment 3 for bug 781870

Revision history for this message
Hadmut Danisch (hadmut) wrote :

OK, after more debugging and reading ubuntu sources I found the precise reason and how to workaround it.

Reason: Ubuntu's method of creating the 32bit versions of these packages for the 64bit ubuntu has a bug (see debian/rules of ia32-libs). It does not recompile the libraries, but simply take the packages from the 32 bit ubuntu, and repackages by extracting them, moving things from /usr/lib to /usr/lib32, and repackaging them.

This in general works. Unfortunately, the gdk-pixbuf library has a hard-coded path under /usr/lib to look for several modules loaded at runtime. This works under 32bit Ubuntu. Obviously, the described method to change 32-bit into 64-bit packages does not and cannot change this path. Therefore, the library under /usr/lib32 still loads the module catalog from /usr/lib and thus the modules from /usr/lib -> bang.

Workaround 1: Fortunately the gdk-pixbuf allows to override the hard coded path to the catalog file with an environment variable. Set

export GDK_PIXBUF_MODULE_FILE=/usr/lib32/gdk-pixbuf-2.0/2.10.0/loaders.cache

Workaround 2: Fortunately, the gdk-pixbuf tries to load loaders.cache.32 before loaders.cache. Set a Symlink from

/usr/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache.32 to
/usr/lib32/gdk-pixbuf-2.0/2.10.0/loaders.cache

My next problem would be to find a package maintainer feeling somewhat responsible or in charge to fix that bug or at least put the workaround 2 in the package.