ia32 apps look for libs on the wrong place

Bug #190227 reported by Mahdi on 2008-02-08
130
This bug affects 22 people
Affects Status Importance Assigned to Milestone
gdk-pixbuf (Ubuntu)
Undecided
Unassigned
gtk+2.0 (Ubuntu)
Undecided
Unassigned
gvfs (Ubuntu)
Undecided
Unassigned
ia32-libs (Ubuntu)
Low
Scott Ritchie
Karmic
Low
Scott Ritchie
Maverick
Low
Scott Ritchie

Bug Description

After upgrading from (up-to-date) gutsy -> hardy amd64 via update-manager -d, ia32 apps look for libs on /usr/lib instead of /usr/lib32 .
Particularly, 32bit apps that use icon themes and gtk engines complain about the ELF CLASS 64 of the engines (svg_loader.so) and show /usr/lib/(...)/svg_loader.so on the error message. Everything used to work fine on gutsy. As a result the icons are not shown, and a box with a red "X" is shown instead.
An example of such app is Swiftfox (from www.getswitffox.com, 3.0b3pre-6 - tested with prescott and pentium-m).
Firefox 3 from the repositories show the icons right.
The 32bit firefox from www.getfirefox.com have the same issue though.

32bit browsers are very important for us to have both flash and java plugins working properly (gnash and gcjwebplugin do not meet my needs).

Matthias Klose (doko) wrote :

then these libs have to be patch to get the correct libdir from the personalty at runtime

Changed in ia32-libs:
importance: Undecided → Low
status: New → Triaged
Matthias Klose (doko) wrote :
Changed in ia32-libs:
status: Triaged → Incomplete
Sylvain Pasche (sylvain-pasche) wrote :

I installed that package and tested again. The issue is still here (no stock icons).

 Error loading theme icon 'gtk-close' for stock: Unable to load image-loading module: /usr/lib/gtk-2.0/2.10.0/loaders/libpixbufloader-png.so: /usr/lib/gtk-2.0/2.10.0/loaders/libpixbufloader-png.so: wrong ELF class: ELFCLASS64

Matthias Klose (doko) wrote :

this contradicts your comment in https://bugs.edge.launchpad.net/ubuntu/+source/ia32-libs/+bug/177869/comments/11

which comment is the correct one?

Xaweryz (xaweryz) wrote :

To fix this I run commands :

sudo ln -s /usr/lib32 /usr/l32
sudo sed -i -e 's/usr\/lib/usr\/l32/g' /usr/lib32/gtk-2.0/2.10.0/loader-files.d/libgtk2.0-0.loaders
sudo sed -i -e 's/usr\/lib/usr\/l32/g' /usr/lib32/libgdk_pixbuf-2.0.so.0.1200.9
sudo sed -i -e 's/usr\/lib/usr\/l32/g' /usr/lib32/libgtk-x11-2.0.so.0.1200.9

This change string "usr/lib" to "usr/l32".

Xaweryz (xaweryz) wrote :

ia32-gtk-libs looks to /usr/lib !!!!!!!
Ia32-gtk-libs (libgdk_pixbuf-2.0.so.0.1200.9, libgtk-x11-2.0.so.0.1200.9) doesn't look to /usr/lib32 !!!!!!!

Arthur (moz-liebesgedichte) wrote :

I've just run into this after upgrading to hardy. First thought it's bug 162993, but at least svg_loader.so is present and the 32 bit Minefield binary is looking in /usr/lib/ instead of /usr/lib32.

Launchpad Janitor (janitor) wrote :

This bug was fixed in the package ia32-libs - 2.2ubuntu10

---------------
ia32-libs (2.2ubuntu10) hardy; urgency=low

  * Remove libnss-mdns, recommend lib32nss-mdns. LP: #218097.
  * Add gtk2-engines-murrine. LP: #215488.
  * debian/pango.modules: Update.
  * /usr/lib32/gtk-2.0/2.10.0/*.d/*: Search in /usr/lib32.
    LP: #162993, #177869, #190227, #202448.
  * Freshen packages (including fixed gtk+2.0).

 -- Matthias Klose <email address hidden> Sun, 20 Apr 2008 19:13:15 +0200

Changed in ia32-libs:
status: Incomplete → Fix Released
Arthur (moz-liebesgedichte) wrote :

Verified fixed with latest update. Yay! Wonderful.

Xaweryz (xaweryz) wrote :

I install unofficial 32 bit mplayer for hardy amd64 from http://forum.ubuntu.pl/showpost.php?p=274685&postcount=1
And run gmplayer

daniel@thor:~$ gmplayer
MPlayer 1.0rc2-4.2.3 (C) 2000-2007 MPlayer Team
CPU: Intel(R) Core(TM)2 Quad CPU @ 2.40GHz (Family: 6, Model: 15, Stepping: 7)
CPUflags: MMX: 1 MMX2: 1 3DNow: 0 3DNow2: 0 SSE: 1 SSE2: 1
Skompilowane z wykrywaniem procesora przy starcie.
xscreensaver_disable: Nie mogłem odnaleźć okna XScreenSaver.
Wygaszacz ekranu GNOME wyłączony
mplayer: could not connect to socket
mplayer: No such file or directory
Nie udało się uruchomić obsługi LIRC. Nie będziesz mogł używać swojego pilota.
Gtk-Message: Failed to load module "gail": /usr/lib/gtk-2.0/modules/libgail.so: wrong ELF class: ELFCLASS64
Gtk-Message: Failed to load module "atk-bridge": /usr/lib/gtk-2.0/modules/libatk-bridge.so: wrong ELF class: ELFCLASS64

I fix this by run command

sudo ln -s /usr/lib32 /usr/l32
sudo sed -i -e 's/usr\/lib/usr\/l32/g' /usr/lib32/libgtk-x11-2.0.so.0.1200.9

Please fix libgtk-x11-2.0.so.0.1200.9 ...

How to reopen bug?

Arthur (moz-liebesgedichte) wrote :

@Daniel: Are you sure that you have the newest ia32-libs package? The mirror I usually use only has it only since half an hour.
aptitude show ia32-libs
should show
Version: 2.2ubuntu10

Xaweryz (xaweryz) wrote :

daniel@thor:~$ dpkg -l ia32-libs
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Installed/Config-f/Unpacked/Failed-cfg/Half-inst/t-aWait/T-pend
|/ Err?=(none)/Hold/Reinst-required/X=both-problems (Status,Err: uppercase=bad)
||/ Nazwa Wersja Opis
+++-==============-==============-============================================
ii ia32-libs 2.2ubuntu10 ia32 shared libraries for use on amd64 and i
daniel@thor:~$

Arthur (moz-liebesgedichte) wrote :

Strange, my /usr/lib32/libgtk-x11-2.0.so.0.1200.9 doesn't have a reference to /usr/lib, neither when using ldd nor when grepping through it. Is it possible that the old file somehow survived the update?

Xaweryz (xaweryz) wrote :

before patch ...

md5sum /usr/lib32/libgtk-x11-2.0.so.0.1200.9
66403ea228e452e652fc5d3b4f1e30ff /usr/lib32/libgtk-x11-2.0.so.0.1200.9

Xaweryz (xaweryz) wrote :

ldd isn't show libs form /usr/lib/gtk-2.0* or /usr/lib32/gtk-2.0 .

Xaweryz (xaweryz) wrote :

ldd don't show libs from /usr/lib/gtk-2.0/* or /usr/lib32/gtk-2.0/ .

Arthur (moz-liebesgedichte) wrote :

Reopened as per comment 14 (reference to /usr/lib in /usr/lib32/libgtk-x11-2.0.so.0.1200.9, not to be seen with ldd).

Changed in ia32-libs:
status: Fix Released → Confirmed
Arthur (moz-liebesgedichte) wrote :

Ah, ok, I see the same as Daniel in comment 14. There does seem to be a reference to /usr/lib in /usr/lib32/libgtk-x11-2.0.so.0.1200.9 which doesn't show up with ldd (but does with grep now for me, don't know why I didn't see that). Reopened.

Xaweryz (xaweryz) wrote :

I add gtk+2.0 (Ubuntu)

Changed in gtk+2.0:
status: New → Confirmed
Matthias Klose (doko) wrote :

please provide a test case, which doesn't require 20 additional i386 libraries.

Changed in gtk+2.0:
status: Confirmed → Invalid
Changed in ia32-libs:
status: Confirmed → Incomplete
Xaweryz (xaweryz) wrote :

Test case:
1. Download (liblaunchpad-integration1, gcalctool )
wget http://archive.ubuntu.com/ubuntu/pool/main/g/gcalctool/gcalctool_5.22.1-0ubuntu1_i386.deb
wget http://archive.ubuntu.com/ubuntu/pool/main/l/launchpad-integration/liblaunchpad-integration1_0.1.19_i386.deb

2. Unpack
mkdir /tmp/test
dpkg -x gcalctool_5.22.1-0ubuntu1_i386.deb /tmp/test
dpkg -x liblaunchpad-integration1_0.1.19_i386.deb /tmp/test

3. Set LD_LIBRARY_PATH
export LD_LIBRARY_PATH=/tmp/test/usr/lib

4. Run :

daniel@thor:/tmp$ /tmp/test/usr/bin/gcalctool
Gtk-Message: Failed to load module "gail": /usr/lib/gtk-2.0/modules/libgail.so: wrong ELF class: ELFCLASS64
Gtk-Message: Failed to load module "atk-bridge": /usr/lib/gtk-2.0/modules/libatk-bridge.so: wrong ELF class: ELFCLASS64

(gcalctool:8531): Gtk-WARNING **: /usr/lib/gtk-2.0/2.10.0/immodules/im-scim-bridge.so: wrong ELF class: ELFCLASS64

(gcalctool:8531): Gtk-WARNING **: Loading IM context type 'scim-bridge' failed

(gcalctool:8531): Gtk-WARNING **: /usr/lib/gtk-2.0/2.10.0/immodules/im-scim-bridge.so: wrong ELF class: ELFCLASS64

5. Patch libgtk-x11-2.0.so.0.1200.9

sudo ln -s /usr/lib32 /usr/l32
sudo sed -i -e 's/usr\/lib/usr\/l32/g' /usr/lib32/libgtk-x11-2.0.so.0.1200.9

6. Run:

daniel@thor:/tmp$ /tmp/test/usr/bin/gcalctool

Matthias Klose (doko) on 2008-04-24
Changed in ia32-libs:
status: Incomplete → Confirmed
Peter Cordes (peter-cordes) wrote :

Mesa in ia32-libs has the same problem.

~/bin32/gears is /usr/lib/xscreensaver/gears from xscreensaver on an ia32 Debian Etch system, IIRC. Any 32bit openGL program, even medibuntu's googleearth package, is affected.

$ LIBGL_DEBUG=verbose MESA_DEBUG=1 ~/bin32/gears
libGL: XF86DRIGetClientDriverName: 1.9.0 i965 (screen 0)
libGL: OpenDriver: trying /usr/lib/dri/i965_dri.so
libGL error: dlopen /usr/lib/dri/i965_dri.so failed (/usr/lib/dri/i965_dri.so: wrong ELF class: ELFCLASS64)
libGL error: unable to load driver: i965_dri.so
(runs with software rendering)

Fortunately, mesa has an env var for the driver path:

$ LIBGL_DEBUG=verbose MESA_DEBUG=1 LIBGL_DRIVERS_PATH=/usr/lib32/dri ~/bin32/gears
libGL: XF86DRIGetClientDriverName: 1.9.0 i965 (screen 0)
libGL: OpenDriver: trying /usr/lib32/dri/i965_dri.so
drmOpenDevice: node name is /dev/dri/card0
drmOpenDevice: open result is 4, (OK)
drmOpenByBusid: Searching for BusID pci:0000:00:02.0
drmOpenDevice: node name is /dev/dri/card0
drmOpenDevice: open result is 4, (OK)
drmOpenByBusid: drmOpenMinor returns 4
drmOpenByBusid: drmGetBusid reports pci:0000:00:02.0
Mesa warning: couldn't open libtxc_dxtn.so, software DXTn compression/decompression unavailable
(runs with hardware rendering)

Lei Zhang (thestig-google) wrote :

So does libgphoto2 in ia32-libs. It looks for port plugins in /usr/lib, thus apps that depend on it cannot find any camera ports.

To reproduce:

1. verify 64-bit "gphoto2 --list-ports" outputs disk:/, usb:, etc
2. install lib32readline5
3. download 32-bit gphoto2 deb pkg
4. ar x gphoto2_2.4.0-1_i376.deb; tar zxf data.tar.gz
5. download 32-bit libcdk5
6. ar x libcdk5...i386.deb; ar zxf data.tar.gz
7. cd usr/bin
8. run LD_LIBRARY_PATH=../lib ./gphoto2 --list-ports

Expected result: same output as 64-bit gphoto2 --list-ports
Actual result: output is an empty list

Saivann Carignan (oxmosys) wrote :

Picasa 2.7 for AMD64 is not able to import photos with libgphoto because of this problem

Jan Ploski (jpljpl) wrote :

A possible workaround is to export GTK_PATH=/emul/ia32-linux/usr/lib/gtk-2.0 prior to starting a 32bit GTK application. This way I got rid of the "wrong ELF class: ELFCLASS64" warning concerning a GTK engine.

Dan Kegel (dank) wrote :

Is this still a problem in Intrepid?

Dan Kegel (dank) wrote :

Here's a workaround script for at least Ubuntu 8.04.1. What other libraries should be added to this list?

#!/bin/sh
# Script to work around https://bugs.launchpad.net/ubuntu/+source/ia32-libs/+bug/190227
# "Picasa can't capture images on 64 bit ubuntu"

if grep -q /usr/lib /usr/lib32/libgphoto2.so.2.3.0 && ! grep -q /usr/lib32 /usr/lib32/libgphoto2.so.2.3.0
then
    echo Your system has the bug. Applying workaround.
    sudo ln -s /usr/lib32 /usr/l32
    sudo sed -i.bak 's/\/usr\/lib\//\/usr\/l32\//g' /usr/lib32/libgphoto2.so.2.3.0 /usr/lib32/libgphoto2_port.so.0.8.0
else
    echo Your system does not have the bug.
fi

Lei Zhang (thestig-google) wrote :

Still a problem with Jaunty Alpha 6.

Dan Kegel (dank) wrote :

I'm getting this with apps on Jaunty Beta. In particular, I get the errors

Gtk-Message: Failed to load module "canberra-gtk-module": /usr/lib/gtk-2.0/modules/libcanberra-gtk-module.so: wrong ELF class: ELFCLASS64
/usr/lib/gio/modules/libgvfsdbus.so: wrong ELF class: ELFCLASS64
Failed to load module: /usr/lib/gio/modules/libgvfsdbus.so
/usr/lib/gio/modules/libgiogconf.so: wrong ELF class: ELFCLASS64
Failed to load module: /usr/lib/gio/modules/libgiogconf.so
/usr/lib/gio/modules/libgioremote-volume-monitor.so: wrong ELF class: ELFCLASS64
Failed to load module: /usr/lib/gio/modules/libgioremote-volume-monitor.so

when I try to run a particular 32 bit test app (test_shell from chromium.org) built on jaunty.

I notice this problem a lot with Jaunty. Starting the BOINC manager, for instance.

Still happens on intrepid:

$ chromium-browser
[9555:9555:603307057897:ERROR:/build/buildd/chromium-browser-2.0.174.0~svn20090412r13572/build-tree/src/chrome/common/temp_scaffolding_stubs.cc(157)] Not implemented reached in static bool FirstRun::IsChromeFirstRun()
[9555:9555:603307071882:ERROR:/build/buildd/chromium-browser-2.0.174.0~svn20090412r13572/build-tree/src/chrome/browser/metrics/metrics_service.cc(701)] Not implemented reached instatic std::string MetricsService::GenerateClientID()
[9555:9555:603307081267:FATAL:/build/buildd/chromium-browser-2.0.174.0~svn20090412r13572/build-tree/src/chrome/app/chrome_dll_main.cc(162)] Gtk: /usr/lib/gtk-2.0/2.10.0/engines/libqt4engine.so: classe ELF errada: ELFCLASS64

Denis (denis-clijsters) wrote :

same chromium error on jaunty as dan kegel:

chromium-browser
Gtk-Message: Failed to load module "canberra-gtk-module": /usr/lib/gtk-2.0/modules/libcanberra-gtk-module.so: verkeerde ELF-klasse: ELFCLASS64
[5376:5376:196343907:ERROR:/build/buildd/chromium-browser-2.0.175.0~svn20090414r13668/build-tree/src/chrome/common/temp_scaffolding_stubs.cc(157)] Not implemented reached in static boolFirstRun::IsChromeFirstRun()
[5376:5376:196504169:ERROR:/build/buildd/chromium-browser-2.0.175.0~svn20090414r13668/build-tree/src/chrome/browser/metrics/metrics_service.cc(701)] Not implemented reached in static std::string MetricsService::GenerateClientID()
[5376:5376:196524360:FATAL:/build/buildd/chromium-browser-2.0.175.0~svn20090414r13668/build-tree/src/chrome/app/chrome_dll_main.cc(162)] Gtk: /usr/lib/gtk-2.0/2.10.0/engines/libqtcurve.so: verkeerde ELF-klasse: ELFCLASS64
Traceer/breekpunt-instructie (core dumped)

I can confirm this bug with firefox on Jaunty-amd64. And I mean *final* Jaunty...

Dan Kegel (dank) wrote :

The Chromium project is gathering a list of the 32-bit-on-64-bit problems they're facing at
http://code.google.com/p/chromium/wiki/Linux64BitIssues
It would be good if we could resolve all of them for Koala.

It's sad that resolving these is considered low importance. The 32 bit subsystem should work, dammit.

Dan Kegel (dank) wrote :

Still present in Jaunty Alpha 2 when starting Google Chrome:

Gtk-Message: Failed to load module "canberra-gtk-module": /usr/lib/gtk-2.0/modules/libcanberra-gtk-module.so: wrong ELF class: ELFCLASS64

Possible culprit:
$ strings /usr/lib32/libgdk_pixbuf-2.0.so | grep /usr/lib
/usr/lib/gtk-2.0/2.10.0/loader-files.d

Martin Karpinski (mkarpinski) wrote :

Present on Jaunty x64 when starting Chromium/Chrome.

Terminal:

Gtk-Message: Failed to load module "gail": /usr/lib/gtk-2.0/modules/libgail.so: wrong ELF class: ELFCLASS64
Gtk-Message: Failed to load module "gail": /usr/lib/gtk-2.0/modules/libgail.so: wrong ELF class: ELFCLASS64
**
ERROR:accessible.c:556:spi_accessible_construct: assertion failed: (o)
Aborted
marty@ubuntu:~$
marty@ubuntu:~$ chromium-browser
Gtk-Message: Failed to load module "gail": /usr/lib/gtk-2.0/modules/libgail.so: wrong ELF class: ELFCLASS64
Gtk-Message: Failed to load module "gail": /usr/lib/gtk-2.0/modules/libgail.so: wrong ELF class: ELFCLASS64
**
ERROR:accessible.c:556:spi_accessible_construct: assertion failed: (o)
Aborted

Nicolás Wolovick (nwolovick) wrote :

Workaround for Jaunty amd64

Get and install http://taurinocerveza.com/scripts/getlibs-all.deb
Then: sudo getlibs -l libgail.so

It also solved my chromium-browser problem.

Best, Nico

Martin Karpinski (mkarpinski) wrote :

Thanks Nico! Your workaround worked.

Never underestimate the power of getlibs ;)

Now, am I to undestand that, at least in my case, the error message

Gtk-Message: Failed to load module "gail": /usr/lib/gtk-2.0/modules/libgail.so: wrong ELF class: ELFCLASS64

was caused by libgail being a 32bit library and not compatible with amd64 architecture?

On Wed, Jul 8, 2009 at 10:29 AM, Martin Karpinski <email address hidden>wrote:

> Thanks Nico! Your workaround worked.
>
> Never underestimate the power of getlibs ;)
>
> Now, am I to undestand that, at least in my case, the error message
>
> Gtk-Message: Failed to load module "gail":
> /usr/lib/gtk-2.0/modules/libgail.so: wrong ELF class: ELFCLASS64
>
> was caused by libgail being a 32bit library and not compatible with
> amd64 architecture?
>

Yeap.
As far as I know, amd64 architecture switches on-the-fly to i386, but once
you are there all the execution should remain 32 bits.
That is why some 32 bit applications can run perfectly on amd64, just stuff
everything on the ELF executable, including all dynamic libraries and you
are done.
If you want to stay modular and use the dynamic linking process, you should
feed all the 32 bits libs the app will ever need.
It seems libgail.so is not part (yet?) of the ia32-libs, though.

Best, Nico

>
> --
> ia32 apps look for libs on the wrong place
> https://bugs.launchpad.net/bugs/190227
> You received this bug notification because you are a direct subscriber
> of the bug.
>

Peter Cordes (peter-cordes) wrote :

> Now, am I to undestand that, at least in my case, the error message
> Gtk-Message: Failed to load module "gail": /usr/lib/gtk-2.0/modules/libgail.so: wrong ELF class: ELFCLASS64
> was caused by libgail being a 32bit library and not compatible with amd64 architecture?

amd64 Linux kernels support ia32 processes running in 32bit compatibility mode. From the point-of-view of the 32bit process, it's pretty much the same as running under a 32bit (i386 architecture) kernel. (This is now called legacy mode on).

http://en.wikipedia.org/wiki/Long_mode
http://developer.amd.com/pages/123200367.aspx

 So yeah, when the dynamic linker in a 32bit process tries to load a shared library compiled for a different architecture, it returns an error, because it detected that the library is for a different architecture than the process. Just like if the file was a PowerPC or SPARC library.

 The kernel knows whether to run a process in 32 or 64 bit mode by looking at the same ELF headers that libraries have, and that file(1) will show you.

llama$ file /bin/ls
/bin/ls: ELF 32-bit LSB executable, Intel 80386, ...

tesla$ file /bin/ls
/bin/ls: ELF 64-bit LSB executable, x86-64, ...

file works on share libs, too, of course.

Michael Moss (mmoss) wrote :

I think what the "libgail.so: wrong ELF class" error ultimately comes down to is that /usr/lib32/gtk-2.0/modules/libgail.so was removed from ia32-libs for some reason. Does anybody know why? GTK+ is clearly still looking for it, and it still exists in the 64-bit environment (hence the wrong architecture version that is being found), so why not in ia32-libs?

The Fiddler (stapostol) wrote :

"/usr/lib32/gtk-2.0/modules/libgail.so was removed from ia32-libs for some reason"

I can confirm this - anyone knows why?

Scott Ritchie (scottritchie) wrote :

The issue is that the libgail library was renamed from libgail18 to libgail-common.

Scott Ritchie (scottritchie) wrote :

I've got a local build of this working with libgail18 and libgail-common (and some other fixes), I'm going to try and upload it now. The source package is huge though and I'm having issues with dput. I may need to borrow a friend's non-comcast internet connection.

Changed in ia32-libs (Ubuntu Karmic):
assignee: nobody → Scott Ritchie (scottritchie)
status: Confirmed → In Progress
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package ia32-libs - 2.7ubuntu9

---------------
ia32-libs (2.7ubuntu9) karmic; urgency=low

  * Refresh packages
  * Add libgsm1 (LP: #411747)
  * Add libdrm-intel1 (LP: #352455)
  * Add libgail-common (LP: #190227)

 -- Scott Ritchie <email address hidden> Mon, 10 Aug 2009 21:11:53 -0700

Changed in ia32-libs (Ubuntu Karmic):
status: In Progress → Fix Released
Saivann Carignan (oxmosys) wrote :

Scott Ritchie : Thanks for your work on this, however the libgphoto2 bug remains. Should I re-open this bug or report a new one? And do you have any clue on what is causing that issue with libgphoto? See https://bugs.edge.launchpad.net/ubuntu/+source/ia32-libs/+bug/190227/comments/23

Scott Ritchie (scottritchie) wrote :

i wonder if a simple rebuild of libgphoto2 and similar might fix it. Generally things go bad when the 32 bit libraries the program needs to link to aren't available at build time.

Saivann Carignan (oxmosys) wrote :

Scott Ritchie : Is that a valid theory considering that ia32-libs has been rebuilt recently by you last update, and considering the fact that the bug exist since intrepid? I don't know that much how ia32-libs work so I'm pretty confused about what can fix this issue.

Kayvan Sylvan (kayvan) wrote :

I still see this bug after my upgrade to lucid (10.04) on amd64.

kayvan@kayvan-desktop:~$ dpkg -l ia32-libs
ii ia32-libs 2.7ubuntu25

kayvan@kayvan-desktop:~$ /opt/agns/bin/agnclient
/usr/lib/gio/modules/libgvfsdbus.so: wrong ELF class: ELFCLASS64
Failed to load module: /usr/lib/gio/modules/libgvfsdbus.so

ldd only shows libs in /usr/lib32.

Using LD_DEBUG=files, I see this:

     16419: file=/usr/lib/gio/modules/libgvfsdbus.so [0]; needed by /usr/lib32/libgmodule-2.0.so.0 [0]
/usr/lib/gio/modules/libgvfsdbus.so: wrong ELF class: ELFCLASS64
Failed to load module: /usr/lib/gio/modules/libgvfsdbus.so
     16419:

However, I can't find any reference in any libraries that I might be able to patch using the workaround in comment #5.

I have attached the full log (from running LD_DEBUG=files).?field.comment=I still see this bug after my upgrade to lucid (10.04) on amd64.

kayvan@kayvan-desktop:~$ dpkg -l ia32-libs
ii ia32-libs 2.7ubuntu25

kayvan@kayvan-desktop:~$ /opt/agns/bin/agnclient
/usr/lib/gio/modules/libgvfsdbus.so: wrong ELF class: ELFCLASS64
Failed to load module: /usr/lib/gio/modules/libgvfsdbus.so

ldd only shows libs in /usr/lib32.

Using LD_DEBUG=files, I see this:

     16419: file=/usr/lib/gio/modules/libgvfsdbus.so [0]; needed by /usr/lib32/libgmodule-2.0.so.0 [0]
/usr/lib/gio/modules/libgvfsdbus.so: wrong ELF class: ELFCLASS64
Failed to load module: /usr/lib/gio/modules/libgvfsdbus.so
     16419:

However, I can't find any reference in any libraries that I might be able to patch using the workaround in comment #5.

I have attached the full log (from running LD_DEBUG=files).

John Center (john-center) wrote :

I'm having the same problem. I'm running Ubuntu 10.04 X86_64. I upgraded to Thunderbird 3.1 (32-bit), & when it starts I get the following errors:

$ /opt/thunderbird/thunderbird -profilemanager
/usr/lib/gio/modules/libgvfsdbus.so: wrong ELF class: ELFCLASS64
Failed to load module: /usr/lib/gio/modules/libgvfsdbus.so
LoadPlugin: failed to initialize shared library
/usr/lib/jvm/java-6-sun-1.6.0.20/jre/lib/amd64/libnpjp2.so
[/usr/lib/jvm/java-6-sun-1.6.0.20/jre/lib/amd64/libnpjp2.so: wrong ELF class: ELFCLASS64]
LoadPlugin: failed to initialize shared library
/usr/lib/mozilla/plugins/libtotem-cone-plugin.so
[/usr/lib/mozilla/plugins/libtotem-cone-plugin.so: wrong ELF class: ELFCLASS64]
LoadPlugin: failed to initialize shared library
/usr/lib/mozilla/plugins/libtotem-gmp-plugin.so
[/usr/lib/mozilla/plugins/libtotem-gmp-plugin.so: wrong ELF class: ELFCLASS64]
LoadPlugin: failed to initialize shared library
/usr/lib/mozilla/plugins/libtotem-mully-plugin.so
[/usr/lib/mozilla/plugins/libtotem-mully-plugin.so: wrong ELF class: ELFCLASS64]
LoadPlugin: failed to initialize shared library
/usr/lib/mozilla/plugins/libtotem-narrowspace-plugin.so
[/usr/lib/mozilla/plugins/libtotem-narrowspace-plugin.so: wrong ELF class: ELFCLASS64]
LoadPlugin: failed to initialize shared library
/usr/lib/nspluginwrapper/plugins/npwrapper.nppdf.so
[/usr/lib/nspluginwrapper/plugins/npwrapper.nppdf.so: wrong ELF class: ELFCLASS64]
LoadPlugin: failed to initialize shared library
/usr/lib/mozilla/plugins/librhythmbox-itms-detection-plugin.so
[/usr/lib/mozilla/plugins/librhythmbox-itms-detection-plugin.so: wrong ELF class: ELFCLASS64]
LoadPlugin: failed to initialize shared library
/var/lib/flashplugin-installer/npwrapper.libflashplayer.so
[/var/lib/flashplugin-installer/npwrapper.libflashplayer.so: wrong ELF class: ELFCLASS64]

This caused a number of problems with TB 3.1, creating multiple files & directories under ../Mail/ImapMail/mail.villanova.edu/* in the form of <foldername>-<index>.*, each with a different size. Also, TB 3.1 would constantly download messages. I then installed TB 3.2pre (64-bit), created a new profile & removed all of the extraneous files & directories. This seemed to resolve the immediate problem with TB, but not the actual problem with the libraries.

Jan Vlnas (jnv) wrote :

This is still an issue in Lucid Lynx (a regression?).
I have ia32-libs from lucid-proposed (2.7ubuntu26).

I have "official" 32 bit Firefox build fom Mozilla (for testing purposes). On start, I get this output:

/usr/share/themes/Ambiance/gtk-2.0/gtkrc:111: error: unexpected identifier `cellstyle', expected character `}'
/usr/lib/gio/modules/libgiogconf.so: wrong ELF class: ELFCLASS64
Failed to load module: /usr/lib/gio/modules/libgiogconf.so
/usr/lib/gio/modules/libgvfsdbus.so: wrong ELF class: ELFCLASS64
Failed to load module: /usr/lib/gio/modules/libgvfsdbus.so
/usr/lib/gio/modules/libgioremote-volume-monitor.so: wrong ELF class: ELFCLASS64
Failed to load module: /usr/lib/gio/modules/libgioremote-volume-monitor.so

Also, notice the first line about Ambiance theme. It may be reated to the fall-back to default GTK theme (square, gray and blue-ish) for all 32 bit GTK appliactions (incl. Flash Player's context menu). This could be for separate bug report.

Scott Ritchie (scottritchie) wrote :

syntax, does that same thing happen if you don't use the -proposed ia32-libs?

To my knowledge the gio modules bits were never working properly, although some of the other libraries in this report were fixed

Id2ndR (id2ndr) wrote :

This is still an issue on Ubuntu 10.10 too.

This bug also affects me, no pixmaps in BOINC, missing images in the Firefox 4 beta.
Running on Ubuntu 10.10

After doing some more digging around I found a workaround for the gdk-pixbuf problem, described here: http://guide.ubuntuforums.org/showpost.php?p=683735&postcount=2

I've also noticed that /usr/lib32/gdk-pixbuf-2.0/gdk-pixbuf-query-loaders tries to load all the x86-64 files from /usr/lib/gdk-pixbuf-2.0/gdk-pixbuf-query-loaders so maybe it's a simple issue of a wrong path that's compiled in because of a 32bit chroot or something, as using strings on it results in a /usr/lib and not a /usr/lib32 string.

Changed in gdk-pixbuf (Ubuntu Karmic):
status: New → Won't Fix
Scott Ritchie (scottritchie) wrote :

Per Robert's comment 55, there is still an open issue with gdk-pixbuf hard-coding /usr/lib that makes it stop working in the ia32-libs context. The same is true of the gio modules, which have been broken since at least Jaunty. I've opened tasks against each of them.

I will also note that libjasper1 is also not in ia32-libs, and gdk-pixbuf depends on it, so it should be added.

Scott Ritchie (scottritchie) wrote :

Actually see here for the gdk-pixbuf issue: https://bugs.launchpad.net/ubuntu/+source/gdk-pixbuf/+bug/641056

Reopening the ia32-libs task since it will need an update after there's a fix.

Changed in ia32-libs (Ubuntu):
status: Fix Released → Triaged

I've just upgraded to the latest ia32-libs for Maverick. I get this error.
"Setting up ia32-libs (20090808ubuntu7) ...
g_module_open() failed for /usr/lib32/gdk-pixbuf-2.0/2.10.0/loaders/libpixbufloader-jasper.so: libjasper.so.1: cannot open shared object file: No such file or directory"

It is likely that this error is from a previous upgrade error. Is there a simple way to check/fix the existence of these directories during the upgrade?

Scott Ritchie (scottritchie) wrote :

Dean, that's because libjasper1 isn't in ia32-libs. That should be a simple fix...

Launchpad Janitor (janitor) wrote :

This bug was fixed in the package ia32-libs - 20090808ubuntu8

---------------
ia32-libs (20090808ubuntu8) maverick; urgency=low

  * Add libjasper1 (LP: #190227)
  * Add libtalloc2 (LP: #653982)
  * fetch-and-build: use --only-source when getting source packages to avoid
    getting wrong source package for libjasper1
 -- Scott Ritchie <email address hidden> Mon, 04 Oct 2010 07:33:32 -0700

Changed in ia32-libs (Ubuntu Maverick):
status: Triaged → Fix Released
Kane Zhu (kane-mx) wrote :

I also see similar problem on Ubuntu 10.04 64-bit.

I launch my gtk application from NFS mount point, then click the 'Browser' button of my application to open directory picker.

Then got below errors,

/usr/lib/gio/modules/libgioremote-volume-monitor.so: wrong ELF class: ELFCLASS64
Failed to load module: /usr/lib/gio/modules/libgioremote-volume-monitor.so
/usr/lib/gio/modules/libgvfsdbus.so: wrong ELF class: ELFCLASS64
Failed to load module: /usr/lib/gio/modules/libgvfsdbus.so
/usr/lib/gio/modules/libgiogconf.so: wrong ELF class: ELFCLASS64
Failed to load module: /usr/lib/gio/modules/libgiogconf.so

I have installed ia32-libs, and update it to latest. And the same app works well on OpenSuse 11.2 64 bit.

Hope to reopen this one to get that fixing.

Launchpad Janitor (janitor) wrote :

Status changed to 'Confirmed' because the bug affects multiple users.

Changed in gdk-pixbuf (Ubuntu Maverick):
status: New → Confirmed
Changed in gdk-pixbuf (Ubuntu):
status: New → Confirmed
Changed in gvfs (Ubuntu Karmic):
status: New → Confirmed
Changed in gvfs (Ubuntu Maverick):
status: New → Confirmed
Changed in gvfs (Ubuntu):
status: New → Confirmed
Adolfo Jayme (fitojb) on 2013-07-06
no longer affects: gtk+2.0 (Ubuntu Karmic)
no longer affects: gtk+2.0 (Ubuntu Maverick)
no longer affects: gvfs (Ubuntu Karmic)
no longer affects: gvfs (Ubuntu Maverick)
no longer affects: gdk-pixbuf (Ubuntu Karmic)
no longer affects: gdk-pixbuf (Ubuntu Maverick)
To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Duplicates of this bug

Other bug subscribers