[kde-linux] JPEG 7 vs KDE-4.4 (DLL HELL comes to Linux?)

Kevin Krammer kevin.krammer at gmx.at
Wed Mar 10 17:55:41 UTC 2010


On Wednesday, 2010-03-10, James Tyrer wrote:
> Kevin Krammer wrote:
> > On Wednesday, 2010-03-10, James Tyrer wrote:
> >> I have an interesting issue which appears to be an obscure bug or a
> >> build system issue.  I updated Firefox and needed to upgrade a bunch of
> >> stuff first.
> >>
> >> I installed: "jpeg-7", but I did not remove version 6.2 pending
> >> rebuilding other packages.  I did rebuild KDESupport and the KDE-4.4
> >> BRANCH tree.
> >>
> >> When I open Konqueror, it opens fine but when I open a web page (e.g.
> >> www.kde.org) it crashes without the KDE crash dialog appearing.
> >>
> >> So, I opened it in a Konsole.  I get this error message:
> >>
> >> konqueror(32716)/kio (Slave) KIO::Slave::createSlave: createSlave "http"
> >> for KUrl("http://www.kde.org/images/teaser/js-jam.jpg")
> >> konqueror(32716)/kio (KIOConnection)
> >> KIO::ConnectionServer::listenForRemote: Listening on
> >> "local:/tmp/jrt-kde4/ksocket-jrt/konquerorE32716.slave-socket"
> >> Wrong JPEG library version: library is 70, caller expects 62
> >
> > Would be interesting where this output comes from.
> 
> Yes it would.  What I can't understand is that if something is linked
> against the older JPEG library, why doesn't it just use it.

One possible reason could be dynamic opening.
Shared libraries can either be linked (basically encoding dependency at build 
time) or opened and "read" during runtime.
This technique is for example used for plugins but also for optional features 
depending on other libraries that one doesn't want to fully depend on (hence 
optional).

The step of looking for the appropriate library is sometimes implemented by 
matching file names against a certain pattern (and by applying the known so-
name conventions).
In case this is happening here this lookup could find the wrong version.

> > Can you check if both JPEG libraries have different so-names and whether
> > you have a .so symlink pointing to either one?
> 
> [root at localhost lib]# ls -l libjpeg.*
> -rw-r--r-- 1 root root 247278 Mar  8 11:21 libjpeg.a
> -rwxr-xr-x 1 root root    913 Mar  8 11:21 libjpeg.la
> lrwxrwxrwx 1 root root     16 Mar  8 11:21 libjpeg.so -> libjpeg.so.7.0.0
> lrwxrwxrwx 1 root root     17 Aug  3  2009 libjpeg.so.62 ->
> libjpeg.so.62.0.0
> -rwxr-xr-x 1 root root 140777 Aug  3  2009 libjpeg.so.62.0.0
> lrwxrwxrwx 1 root root     16 Mar  8 11:21 libjpeg.so.7 -> libjpeg.so.7.0.0
> -rwxr-xr-x 1 root root 229176 Mar  8 11:21 libjpeg.so.7.0.0
> 
> Looks correct to me.

It certainly does.
However, do give equal footing to both version in case of a lookup as 
described above, try removing the symnlink that doesn't encode any version 
number, i.e.  libjpeg.so -> libjpeg.so.7.0.0

Cheers,
Kevin

-- 
Kevin Krammer, KDE developer, xdg-utils developer
KDE user support, developer mentoring
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 190 bytes
Desc: This is a digitally signed message part.
URL: <http://mail.kde.org/pipermail/kde-linux/attachments/20100310/86688749/attachment.sig>


More information about the kde-linux mailing list