Comment 18 for bug 359407

Revision history for this message
TJ (tj) wrote :

Confirmation that a trivial patch solves this issue.

ICEDTEAPLUGIN_DEBUG=1 firefox-3.5
...
ICEDTEA PLUGIN: Instance::StartAppletviewer
ICEDTEA PLUGIN: get component manager
ICEDTEA PLUGIN: create local file
ICEDTEA PLUGIN: init with path
ICEDTEA PLUGIN: create process
ICEDTEA PLUGIN: init process
ICEDTEA PLUGIN: clearing old input fifo (if any): /home/tj/.icedteaplugin/icedtea-appletviewer-to-plugin
ICEDTEA PLUGIN: creating input fifo: /home/tj/.icedteaplugin/icedtea-appletviewer-to-plugin
ICEDTEA PLUGIN: created input fifo: /home/tj/.icedteaplugin/icedtea-appletviewer-to-plugin
ICEDTEA PLUGIN: got confirmation that appletviewer is running
ICEDTEA PLUGIN: clearing old output fifo (if any): /home/tj/.icedteaplugin/icedtea-plugin-to-appletviewer
ICEDTEA PLUGIN: creating output fifo: /home/tj/.icedteaplugin/icedtea-plugin-to-appletviewer
ICEDTEA PLUGIN: created output fifo: /home/tj/.icedteaplugin/icedtea-plugin-to-appletviewer
ICEDTEA PLUGIN: run process
Listening for transport dt_socket at address: 8787
ICEDTEA PLUGIN: Instance::StartAppletviewer return
...

In summary, The Jaunty version of openjdk-6 IcedTeaPlugin is built against the xulrunner 1.9.0.x dev headers (which Firefox 3.0.x uses). IcedTeaPlugin creates an instance of nsIProcess using the Interface ID (IID) declared in those headers. The nsIProcess object then loads and manages the JVM in another process.

Firefox 3.5 uses xulrunner 1.9.1.x, which has 'unfrozen' the nsIProcess interface definition and consequently changed the IID. Therefore when xulrunner 1.9.1 is asked to create the nsIProcess object by IcedTeaPlugin it fails since the old xulrunner 1.9.0 IID doesn't exist.

I've patched IcedTeaPlugin.cc to query the IID of nsIProcess at run-time rather than use the build-time definition. I've tested the same IcedTeaPlugin.so with Firefox 3.0 and 3.5 and both work correctly, starting the applet.

I've found there is a subsequent exception once the Sun Java test applet is running which needs a separate investigation:

ICEDTEA PLUGIN: Instance::ConsumeMsgFromJVM
received message: instance 1 status exception: java.lang.StringIndexOutOfBoundsException: String index out of range: 8.
Processing complete
ICEDTEA PLUGIN: Instance::ConsumeMsgFromJVM return

However, other sophisticated Java applets are working fine on Firefox 3.5 now.

I will attach a patch and debdiff with the fix and publish a fixed version of openjdk-6 to my PPA.

Because it takes so long to build openjdk and its a lot of overkill for building just IcedTeaPlugin I'll also build just the IcedTeaPlugin.so for i386 and amd64 and host them where they can easily be tested by backing up the current shared object:

/usr/lib/jvm/java-6-openjdk/jre/lib/{i386,amd64}/IcedTeaPlugin.so

and replacing it with the new one.