[CentOS] firefox. java. 64 bit. bleah!

Mon Nov 22 14:29:49 UTC 2010
Lars Hecking <lhecking at users.sourceforge.net>

Nicolas Thierry-Mieg writes:
> nspluginwrapper is for running 32-bit plugins in a 64-bit browser. Now 
> that we have functional 64-bit flash and java plugins I don't see the 
> need, but YMMV.

 We do not have a functional 64-bit flash plugin, and no 64-bit adobe plugin,
 so we need the wrapper for those.

 I've done some systematic testing this morning. If you don't want to read
 everything below, the summary is that on an x86_64 system, only the 64-bit
 java plugin works, and the 32-bit plugin crashes. This means that the only
 working setup on x86_64 is firefox + java plugin x86_64, nspluginwrapper
 plus Adobe + flash 32-bit plugins. The brave may try the beta 64-bit flash

 Test setup. This is a 64-bit machine running CentOS 5.4, all relevant packages
 removed and a fresh, clean install of firefox 3.0.18 i386, Adobe reader 9.4,
 flash-plugin from rpmforge. I also extracted the java plugin from
 jre-6u22-linux-i586-rpm.bin and copied it into /usr/lib/mozilla/plugins.

$ ll /usr/lib/mozilla/plugins/
total 292
lrwxrwxrwx 1 root root     39 Nov 22 13:09 libflashplayer.so -> /usr/lib/flash-plugin/libflashplayer.so
-rwxr-xr-x 1 root root  77510 Sep 15 09:44 libnpjp2.so
-rwxr-xr-x 1 root root  30640 Oct  9  2009 mozplugger.so
-rwxr-xr-x 1 root root 179552 Nov 22 13:09 nppdf.so

 firefox starts normally and about:plugins shows the adobe/flash/java plugins
 are installed. Then I browse to www.javatester.org and click on the "Java
 Enabled?" button. The result is a crash:

$ firefox
Didn't find JVM under /usr/lib/mozilla/plugins
firefox: ../../../../src/plugin/solaris/plugin2/common/JavaVM.c:104: InitializeJVM: Assertion `foundJVM' failed.
/usr/lib/firefox-3.0.18/run-mozilla.sh: line 131:  6093 Aborted                 "$prog" ${1+"$@"}

 I get the same result with a binary, /usr/local based installation of firefox
 3.6.12 (i386) from mozilla.org.

 Next, I am trying the following: install the complete 32-bit java rpm under
 /usr/java.i386 and link the 32-bin java plugin rather than copy it.

$ cd /usr/lib/mozilla/plugins/
$ ll
total 212
lrwxrwxrwx 1 root root     39 Nov 22 13:09 libflashplayer.so -> /usr/lib/flash-plugin/libflashplayer.so
lrwxrwxrwx 1 root root     43 Nov 22 13:36 libnpjp2.so -> /usr/java.i386/default/lib/i386/libnpjp2.so
-rwxr-xr-x 1 root root  30640 Oct  9  2009 mozplugger.so
-rwxr-xr-x 1 root root 179552 Nov 22 13:09 nppdf.so

 Similar result.

$ firefox
Error occurred during initialization of VM
java/lang/NoClassDefFoundError: java/lang/Object

 The above proves conclusively that the 32-bit firefox browser is broken on
 a 64-bit system. The culprit is probably java.

 Onward to x86_64. Remove all packages, start with a fresh install of
 Adobe reader, flash plugin (i386), jre-6u22-linux-x64-rpm.bin, firefox 3.0.18
 x86_64, *no* nspluginwrapper. about:plugins shows the java plugin only, as
 expected, and the browser passes the "java enabled" test at javatester.org.

 Then I install the i386 nspluginwrapper. No change in about:plugins, but I
 noticed this

$ ll plugins*/libn*
lrwxrwxrwx 1 root root 38 Nov 22 13:51 plugins-wrapped/libnpjp2.so -> /usr/lib64/mozilla/plugins/libnpjp2.so
lrwxrwxrwx 1 root root 39 Nov 22 13:46 plugins/libnpjp2.so -> /usr/java/default/lib/amd64/libnpjp2.so

 i.e. nspluginwrapper.i386 installation has wrapped the native 64-bit java

 Last step is the installation of nspluginwrapper.x86_64 on top of all.
 All plugins show up and java works.

 Summary: only the 64-bit browser works on a 64-bit machine. It needs
 nspluginwrapper to make use of the 32-bit blob plugins. The 32-bit browser
 crashes and burns as soon as java (or even java script) is involved.
 In this round of testing, I haven't seen the removal of the java plugin
 link from the plugins-wrapped directory that I reported earlier.

This message and any attachments may contain Cypress (or its
subsidiaries) confidential information. If it has been received
in error, please advise the sender and immediately delete this