JDK-6656260 : plugin2: Client JVM crashes when trying to load applet using an older JVM version than 6u10
  • Type: Bug
  • Component: deploy
  • Sub-Component: plugin
  • Affected Version: 6u10
  • Priority: P2
  • Status: Closed
  • Resolution: Fixed
  • OS: windows_xp
  • CPU: x86
  • Submitted: 2008-01-29
  • Updated: 2010-09-08
  • Resolved: 2008-02-21
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
6u10 b12Fixed
On a windows XP machine, 
- install JREs 5u13 and 6u10
- open IE browser
- load a 5.0u13 static versioning applet into the browser

The client JVM crashes with a hs_err log as the one in the attachment.

The server (browser) side tracing shows that the getJavaPluginSettings() method cannot be found.

SUGGESTED FIX http://sa.sfbay.sun.com/projects/deployment_data/6u10/6656260.0

EVALUATION The root problem is that the Config class is referring directly to the sun.jkernel.DownloadManager class from the core JRE, and this class is not available in pre-6u10 JREs. This could potentially break Java Web Start as well. To fix this problem more generally, a new method isJREComplete() can be added to the Config class which looks like: public boolean isJREComplete() { try { return sun.jkernel.DownloadManager.isJREComplete(); } catch (Error e) { // The DownloadManager isn't present on earlier JREs return true; } } and this can be called from getJqsSettings() as well as getJavaPluginSettings() -- if doing so is actually relevant.

EVALUATION Attaching the verbose output (verbose.txt) from the dos console. From the hs err log, it looks like the crash is in the HeartBeatThread. Adding a check for JRE version and calls getJavaPluginSettings() and getJqsSettings() only if the version is 1.6.0_10 or higher seems to have suppressed the problem.

EVALUATION The above evaluation is incorrect. The Config classes should be coming from the 6u10 deploy.jar regardless of what JVM version we are running on, so all of their associated methods should always be available. The attached client JVM crash is probably caused by the server side not fully setting up the shared memory segment. The root cause of this problem is something else. More investigation is needed.

EVALUATION The getJavaPluginSettings() and getJqsSettings() methods in Config are only available with 6u10. To avoid the problem, we should check if java version is 6u10 or higher before calling those methods.