FS#17008 - [firefox] x86 - Couldn't load XPCOM.

Attached to Project: Arch Linux
Opened by Isaac G (IsaacG) - Wednesday, 04 November 2009, 16:44 GMT
Last edited by Jan de Groot (JGC) - Thursday, 05 November 2009, 07:48 GMT
Task Type Bug Report
Category Packages: Extra
Status Closed
Assigned To Jan de Groot (JGC)
Architecture All
Severity Low
Priority Normal
Reported Version
Due in Version Undecided
Due Date Undecided
Percent Complete 100%
Votes 0
Private No

Details

Description:
When trying to start firefox: Couldn't load XPCOM.

Additional info:
* package version(s)
xulrunner-1.9.1.4-1 firefox-3.5.4-1 libjpeg-7-1

http://bbs.archlinux.org/viewtopic.php?id=65846


I updated xulrunner, firefox, libjpeg and a bunch of others to no avail.
This task depends upon

Closed by  Jan de Groot (JGC)
Thursday, 05 November 2009, 07:48 GMT
Reason for closing:  Not a bug
Comment by Jan de Groot (JGC) - Wednesday, 04 November 2009, 20:44 GMT
I can't reproduce this. Is your system updated, or did you install firefox on an outdated system? You might want to use strace to find out why XPCOM can't initialize.
Comment by Isaac G (IsaacG) - Wednesday, 04 November 2009, 22:16 GMT
I'm not sure why or how but yesterday I managed to install a bunch of 32 bit libs on my 64 bit machine. (It killed everything inclusing bash.) I thought I reinstalled everything 64 bit. I wonder if this is related...

strace attached.
Comment by Isaac G (IsaacG) - Wednesday, 04 November 2009, 22:25 GMT
xulrunner is up to date. And I just checked libx11 (libx11-1.3.2-1).

strace shows a ton of open()'s failing on "/usr/lib/xulrunner-1.9.1/*" files with ENOENT (No such file or directory).

Why is my xulrunner missing all the .so files from that directory?

37 fails

[code]open("/etc/gre.conf", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/home/goodi/.gre.config", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/home/goodi/.gre.d", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
open("/lib/libnspr4.so", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/lib/libplds4.so", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/lib/tls/libnspr4.so", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/lib/tls/x86_64/libnspr4.so", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/lib/x86_64/libnspr4.so", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/lib/tls/libnspr4.so", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/lib/tls/x86_64/libnspr4.so", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/lib/x86_64/libnspr4.so", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/lib/xulrunner-1.9.1/libX11.so.6", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/lib/xulrunner-1.9.1/libXrender.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/lib/xulrunner-1.9.1/libc.so.6", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/lib/xulrunner-1.9.1/libcairo.so.2", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/lib/xulrunner-1.9.1/libdl.so.2", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/lib/xulrunner-1.9.1/libfontconfig.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/lib/xulrunner-1.9.1/libfreetype.so.6", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/lib/xulrunner-1.9.1/libgcc_s.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/lib/xulrunner-1.9.1/libhunspell-1.2.so.0", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/lib/xulrunner-1.9.1/libjpeg.so.7", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/lib/xulrunner-1.9.1/libm.so.6", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/lib/xulrunner-1.9.1/libnspr4.so", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/lib/xulrunner-1.9.1/libnss3.so", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/lib/xulrunner-1.9.1/libnssutil3.so", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/lib/xulrunner-1.9.1/libplc4.so", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/lib/xulrunner-1.9.1/libplds4.so", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/lib/xulrunner-1.9.1/libpng12.so.0", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/lib/xulrunner-1.9.1/libpthread.so.0", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/lib/xulrunner-1.9.1/libsmime3.so", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/lib/xulrunner-1.9.1/libsoftokn3.so", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/lib/xulrunner-1.9.1/libssl3.so", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/lib/xulrunner-1.9.1/libstdc++.so.6", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/lib/xulrunner-1.9.1/libz.so.1", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/lib/xulrunner-1.9.1/tls/libpthread.so.0", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/lib/xulrunner-1.9.1/tls/x86_64/libpthread.so.0", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/usr/lib/xulrunner-1.9.1/x86_64/libpthread.so.0", O_RDONLY) = -1 ENOENT (No such file or directory)[/code]
Comment by Jan de Groot (JGC) - Wednesday, 04 November 2009, 22:57 GMT
The -ENOENTs are because the linker scans a set of paths to find its libraries. Firefox and xulrunner have been compiled with /usr/lib/xulrunner-1.9.1 compiled as library path, so every library is looked for at that place first.

As for your log, this one is suspicious:
open("/usr/lib/libplds4.so", O_RDONLY) = 3
read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0000\n\0\0004\0\0\0"..., 832) = 832
close(3)

When a valid library is opened, it shows open, read, fstat, mmap, etc. When an invalid library is opened, it shows open, read, close, which is because the library does not suffice. It looks like your nspr package is still i686.
Comment by Isaac G (IsaacG) - Thursday, 05 November 2009, 02:25 GMT
Ah. That did it. Thanks and my apologies for the false alarm. I got smart and fixes them all.

pacman -Qq | while read i ; do pacman -Qi "$i" | grep -q i686 && pacman -S "$i" ; done

Loading...