Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 380805 - www-client/firefox, www-client/icecat and www-client/seamonkey linking against libxul.so/libxpcom.so/libmozjs.so when net-libs/xulrunner is installed
Summary: www-client/firefox, www-client/icecat and www-client/seamonkey linking agains...
Status: RESOLVED INVALID
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: Current packages (show other bugs)
Hardware: All Linux
: Normal normal (vote)
Assignee: Lars Wendler (Polynomial-C) (RETIRED)
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2011-08-27 03:54 UTC by Nathan Phillip Brink (binki) (RETIRED)
Modified: 2011-08-27 13:59 UTC (History)
1 user (show)

See Also:
Package list:
Runtime testing required: ---


Attachments
emerge--info.txt (emerge--info-seamonkey.txt,5.99 KB, text/plain)
2011-08-27 03:54 UTC, Nathan Phillip Brink (binki) (RETIRED)
Details
seamonkey-ldd-output.txt (seamonkey-ldd-output.txt,9.36 KB, text/plain)
2011-08-27 03:54 UTC, Nathan Phillip Brink (binki) (RETIRED)
Details
gdb-output.txt (gdb-output.txt,4.32 KB, text/plain)
2011-08-27 03:55 UTC, Nathan Phillip Brink (binki) (RETIRED)
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Nathan Phillip Brink (binki) (RETIRED) gentoo-dev 2011-08-27 03:54:16 UTC
Created attachment 284763 [details]
emerge--info.txt

This is a fun bug. I had this exact same bug with seamonkey-2.2 but I couldn't debug it (and I upgraded to 2.3.1 in the process of trying to fix it, but that doesn't matter as 2.2 is not in the tree anymore). My installation of seamonkey-2.3.1 has the following in /usr/lib/seamonkey:

anna@delldesky ~ $ LANG=C ls -l /usr/lib/seamonkey
total 28189
-rw-r--r-- 1 root root     4773 Aug 23 14:59 README
-rw-r--r-- 1 root root      825 Aug 23 14:59 Throbber-small.gif
-rw-r--r-- 1 root root     1988 Aug 23 14:59 application.ini
-rw-r--r-- 1 root root     3956 Aug 23 14:59 blocklist.xml
drwxr-xr-x 3 root root      432 Aug 23 15:09 chrome
-rw-r--r-- 1 root root      153 Aug 23 15:01 chrome.manifest
drwxr-xr-x 2 root root     3296 Aug 23 15:09 components
-rwxr-xr-x 1 root root    92208 Aug 23 15:08 crashreporter
-rw-r--r-- 1 root root      587 Aug 23 14:59 crashreporter-override.ini
-rw-r--r-- 1 root root     3803 Aug 23 14:59 crashreporter.ini
drwxr-xr-x 6 root root      160 Aug 14  2010 defaults
-rw-r--r-- 1 root root      125 Aug 23 14:58 dependentlibs.list
drwxr-xr-x 7 root root      320 Aug 15 01:32 extensions
-rw-r--r-- 1 root root    86613 Aug 23 14:59 greprefs.js
drwxr-xr-x 2 root root      168 Aug 23 15:09 isp
-rwxr-xr-x 1 root root   199196 Aug 23 15:08 libldap60.so
-rwxr-xr-x 1 root root     9460 Aug 23 15:08 libldif60.so
-rwxr-xr-x 1 root root     9484 Aug 23 15:08 libmozalloc.so
-rwxr-xr-x 1 root root    17864 Aug 23 15:08 libprldap60.so
-rwxr-xr-x 1 root root    17828 Aug 23 15:08 libxpcom.so
-rwxr-xr-x 1 root root 28165612 Aug 23 15:08 libxul.so
-rwxr-xr-x 1 root root    30826 Aug 23 14:59 license.txt
drwxr-xr-x 5 root root     2056 Aug 23 15:09 modules
-rwxr-xr-x 1 root root    13928 Aug 23 15:08 mozilla-xremote-client
-rw-r--r-- 1 root root       45 Aug 23 14:59 platform.ini
-rwxr-xr-x 1 root root    42524 Aug 23 15:08 plugin-container
lrwxrwxrwx 1 root root       20 Aug 23 15:10 plugins -> ../nsbrowser/plugins
-rw-r--r-- 1 root root    11225 Aug 23 14:57 removed-files
drwxr-xr-x 6 root root     1256 Aug 23 15:09 res
-rwxr-xr-x 1 root root    10380 Aug 23 14:59 run-mozilla.sh
-rwxr-xr-x 1 root root     3908 Aug 23 14:59 seamonkey
-rwxr-xr-x 1 root root    46704 Aug 23 15:08 seamonkey-bin
drwxr-xr-x 2 root root      184 Aug 23 15:09 searchplugins
anna@delldesky ~ $ 

The segfault goes away when I add the one following file:
lrwxrwxrwx 1 root root        9 Aug 26 23:22 libblah.so -> /dev/null

I am also very sure that the segfault will go away if I uninstall xulrunner. The symbolic link hack can be found by reading /usr/lib/moz-runner.sh and searching for '[ -h'.

The problem is that moz-runner.sh doesn't extend LD_LIBRARY_PATH by default unless if a symbolic link with a name ending in '.so' exists in /usr/lib/seamonkey. I have net-libs/xulrunner-1.9.2.17 installed which must be old and ABI-incompatible with seamonkey-2.3.1. Seamonkey wasn't even compiled against the system xulrunner though, it compiles, ships, and installs its own. So, so solve this, seamonkey must be trained to unconditionally link against its own xulrunner or fixed to actually compile against the system xulrunner (and then deal with DEPENDing against a proper xulrunner version). See the attached seamonkey-ldd-output.txt for more information. The culprit libraries installed by both seamonkey and xulrunner are libxul.so and libxpcom.so. net-libs/xulrunner-1.9.2.17 appends /usr/lib/xulrunner-1.9.2 to the linker paths by installing /etc/env.d/08xulrunner with the contents 'LDPATH=//usr/lib/xulrunner-1.9.2'.

All in all, it would be nice for seamonkey to support an external xulrunner so that its own compilation time would be shorter... but I suspect supporting that would be very difficult.
Comment 1 Nathan Phillip Brink (binki) (RETIRED) gentoo-dev 2011-08-27 03:54:50 UTC
Created attachment 284765 [details]
seamonkey-ldd-output.txt
Comment 2 Nathan Phillip Brink (binki) (RETIRED) gentoo-dev 2011-08-27 03:55:12 UTC
Created attachment 284767 [details]
gdb-output.txt
Comment 3 Nathan Phillip Brink (binki) (RETIRED) gentoo-dev 2011-08-27 03:58:26 UTC
Oh, and using the system libxul may be a bad idea since mozilla sets SONAME to just `libxul.so', preventing ABI-incompatible changes to the library from being glossed over by preserved-libs or detected by revdep-rebuild AFAIK.
Comment 4 Lars Wendler (Polynomial-C) (RETIRED) gentoo-dev 2011-08-27 06:38:12 UTC
Thank you very much Nathan for your bug report and your very detailed description.

This is not a problem of seamonkey alone. All mozilla apps I have installed are affected, maybe even more (I didn't test thunderbird for example).

As Nathan pointed out the culprit seems to be /etc/env.d/08xulrunner.
As soon as I remove that file and refresh my environment, the wrong linking is gone for all apps.

So mozilla team, what should we do here? I see this as a really big regression and would like to have this resolved rather sooner than later.
Comment 5 Lars Wendler (Polynomial-C) (RETIRED) gentoo-dev 2011-08-27 07:30:49 UTC
Nathan, nirbheek pointed out that moz_should_set_ld_library_path() from /usr/lib64/seamonkey/run-mozilla.sh returns 0 for all systems except SunOS. The return value 0 in bash means true so the following if statement comes into effect and LD_LIBRARY_PATH is set.
I wonder if there's something else wrong on your system.
Comment 6 Nathan Phillip Brink (binki) (RETIRED) gentoo-dev 2011-08-27 13:59:08 UTC
OK, so I created this bug based on circumstantial evidence. While trying different ways to start seamonkey, I randomly noticed that nscd wasn't running and started it. When nscd is running seamonkey works, when nscd isn't seamonkey fails to start by some sort of segfault for me (I'm running nss_ldap).

So, this bug is invalid. If I figure out why the segfault happens when nscd isn't running I'll open a separate bug.