JDK-6745224 : JNLP File That Works On All Prior 1.5+ JREs/JDKs Fails on 1.6 Update 10 RC b28
  • Type: Bug
  • Component: deploy
  • Sub-Component: webstart
  • Affected Version: 6u10
  • Priority: P3
  • Status: Closed
  • Resolution: Fixed
  • OS: windows_xp
  • CPU: x86
  • Submitted: 2008-09-05
  • Updated: 2011-02-16
  • Resolved: 2008-09-24
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.
JDK 6
6u10 b32Fixed
Related Reports
Duplicate :  
Description
FULL PRODUCT VERSION :
java version "1.6.0_10-rc"
Java(TM) SE Runtime Environment (build 1.6.0_10-rc-b28)
Java HotSpot(TM) Client VM (build 11.0-b15, mixed mode, sharing)

ADDITIONAL OS VERSION INFORMATION :
Microsoft Windows XP [Version 5.1.2600]

A DESCRIPTION OF THE PROBLEM :
This JNLP File, which has worked on all prior 1.5+ JREs/JDKs, now fails with the error listed below:

JNLP File:
--------------
<?xml version="1.0" encoding="utf-8"?>
<jnlp spec="1.5+" codebase="http://sutrosoftware.com/webstart/84c06e4c-bd30-102b-a227-0030483234e2" href="PortalSpy.jnlp">
	<information>
		<title>Portal Spy</title>
		<vendor>Sutro Software</vendor>
		<homepage href="http://sutrosoftware.com"/>
		<description>Portal Spy - Build #8675</description>
		<icon href="spy-sm.gif" width="32" height="32"/>
		<!--icon href="tower.png" width="64" height="64"/-->
		<!--<icon kind="splash" href="portalspy3.png" width="400" height="320"/>-->
		<offline-allowed/>
		<association mime-type="x-application/portalspy" extensions="car"/>
		<shortcut online="true">
			<desktop/>
			<menu submenu="Sutro Software"/>
		</shortcut>
	</information>
	<security>
		<all-permissions/>
	</security>
	<resources>
		<j2se version="1.5+" max-heap-size="256m"/>
		<property name="com.apple.mrj.application.apple.menu.about.name" value="Portal Spy"/>
		<property name="apple.awt.antialiasing" value="true"/>
		<property name="apple.awt.textantialiasing" value="true"/>
		<property name="swing.aatext" value="true"/>
		<property name="apple.awt.graphics.UseQuartz" value="false"/>
		<property name="apple.awt.showGrowBox" value="true"/>
		<property name="com.apple.mrj.application.growbox.intrudes" value="true"/>
		<property name="file.encoding" value="UTF-8"/>
		<extension name="component" href="component.jnlp" version="1.0"/>
				<jar href="portalspy.jar"/>
		<jar href="axis-1.4.jar"/>
		<jar href="bsh-commands-2.0b5.jar"/>
		<jar href="bsh-core-2.0b5.jar"/>
		<jar href="commons-beanutils-1.7.0.jar"/>
		<jar href="commons-codec-1.3.jar"/>
		<jar href="commons-collections-3.2.jar"/>
		<jar href="commons-discovery-0.2.jar"/>
		<jar href="commons-httpclient-3.1.jar"/>
		<jar href="commons-io-1.3.1.jar"/>
		<jar href="commons-jxpath-1.2.jar"/>
		<jar href="commons-lang-2.3.jar"/>
		<jar href="commons-logging-1.1.jar"/>
		<jar href="cssparser-0.9.4.jar"/>
		<jar href="derby-10.3.2.1.jar"/>
		<jar href="derbytools-10.3.2.1.jar"/>
		<jar href="forms-1.0.7.jar"/>
		<jar href="htmlunit-1.14.jar"/>
		<jar href="jaxen-1.1.1.jar"/>
		<jar href="jaxrpc-1.1.jar"/>
		<jar href="jcommon-1.0.12.jar"/>
		<jar href="jdom-1.0.jar"/>
		<jar href="jfreechart-1.0.9.jar"/>
		<jar href="jh-2.0.04.jar"/>
		<jar href="JMeld.jar"/>
		<jar href="js-1.6R7.jar"/>
		<jar href="l2fprod-common-buttonbar.jar"/>
		<jar href="l2fprod-common-sheet-6.11.jar"/>
		<jar href="l2fprod-common-tasks-6.11.jar"/>
		<jar href="log4j-1.2.14.jar"/>
		<jar href="looks-2.1.2.jar"/>
		<jar href="nachocalendar-0.23.jar"/>
		<jar href="nekohtml-0.9.5.jar"/>
		<jar href="ostermillerutils_1_07_00.jar"/>
		<jar href="saaj-1.2.jar"/>
		<jar href="spring-beans-2.0.2.jar"/>
		<jar href="spring-core-2.0.2.jar"/>
		<jar href="substance-lite.jar"/>
		<jar href="swing-worker-1.1.jar"/>
		<jar href="swingx.jar"/>
		<jar href="swixat.jar"/>
		<jar href="swixml.jar"/>
		<jar href="ui.jar"/>
		<jar href="vgn-webservices-toolkit-7.3.jar"/>
		<jar href="wsdl4j-1.5.1.jar"/>
		<jar href="xercesImpl-2.6.2.jar"/>
		<jar href="xml-apis-2.6.2.jar"/>
		<jar href="jdic.jar"/>
	</resources>
	<resources os="Windows">
		<jar href="jdic-windows-x86.jar"/>
		<nativelib href="jdic-windows-x86-native.jar"/>
	</resources>
	<resources os="SunOS" arch="sparc">
		<jar href="jdic-sun-sparc.jar"/>
		<nativelib href="jdic-sun-sparc-native.jar"/>
	</resources>
	<resources os="SunOS" arch="x86">
		<jar href="jdic-sun-x86.jar"/>
		<nativelib href="jdic-sun-x86-native.jar"/>
	</resources>
	<resources os="Linux">
		<jar href="jdic-linux-x86.jar"/>
		<nativelib href="jdic-linux-x86-native.jar"/>
	</resources>
	<resources os="Mac" arch="ppc">
		<jar href="jdic-mac-ppc.jar"/>
		<nativelib href="jdic-mac-ppc-native.jar"/>
	</resources>
	<resources os="Mac" arch="i386">
		<jar href="jdic-mac-i386.jar"/>
		<nativelib href="jdic-mac-i386-native.jar"/>
	</resources>
	<application-desc main-class="com.sutrosoftware.portalspy.framework.Launcher"/>
</jnlp>

ERROR
-----------
java.lang.InternalError: selectedJREDesc null
	at com.sun.javaws.jnl.DefaultMatchJRE.endTraversal(Unknown Source)
	at com.sun.javaws.jnl.LaunchSelection.selectJRE(Unknown Source)
	at com.sun.javaws.jnl.LaunchDesc.selectJRE(Unknown Source)
	at com.sun.javaws.jnl.LaunchDesc.getJREMatcher(Unknown Source)
	at com.sun.javaws.jnl.LaunchDesc.isSecureJVMArgs(Unknown Source)
	at com.sun.javaws.LaunchDownload.checkSignedResourcesHelper(Unknown Source)
	at com.sun.javaws.LaunchDownload.checkSignedResources(Unknown Source)
	at com.sun.javaws.Launcher.prepareLaunchFile(Unknown Source)
	at com.sun.javaws.Launcher.prepareToLaunch(Unknown Source)
	at com.sun.javaws.Launcher.launch(Unknown Source)
	at com.sun.javaws.Main.launchApp(Unknown Source)
	at com.sun.javaws.Main.continueInSecureThread(Unknown Source)
	at com.sun.javaws.Main$1.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)


STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
Go to http://sutrosoftware.com and launch the Web Start app on the home page.

EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
The Web Start app should launch successfully -- as it has in all previous 1.5 or greater Java releases -- rather than fail with an inscrutable error message.
ACTUAL -
java.lang.InternalError: selectedJREDesc null
	at com.sun.javaws.jnl.DefaultMatchJRE.endTraversal(Unknown Source)
	at com.sun.javaws.jnl.LaunchSelection.selectJRE(Unknown Source)
	at com.sun.javaws.jnl.LaunchDesc.selectJRE(Unknown Source)
	at com.sun.javaws.jnl.LaunchDesc.getJREMatcher(Unknown Source)
	at com.sun.javaws.jnl.LaunchDesc.isSecureJVMArgs(Unknown Source)
	at com.sun.javaws.LaunchDownload.checkSignedResourcesHelper(Unknown Source)
	at com.sun.javaws.LaunchDownload.checkSignedResources(Unknown Source)
	at com.sun.javaws.Launcher.prepareLaunchFile(Unknown Source)
	at com.sun.javaws.Launcher.prepareToLaunch(Unknown Source)
	at com.sun.javaws.Launcher.launch(Unknown Source)
	at com.sun.javaws.Main.launchApp(Unknown Source)
	at com.sun.javaws.Main.continueInSecureThread(Unknown Source)
	at com.sun.javaws.Main$1.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)


ERROR MESSAGES/STACK TRACES THAT OCCUR :
java.lang.InternalError: selectedJREDesc null
	at com.sun.javaws.jnl.DefaultMatchJRE.endTraversal(Unknown Source)
	at com.sun.javaws.jnl.LaunchSelection.selectJRE(Unknown Source)
	at com.sun.javaws.jnl.LaunchDesc.selectJRE(Unknown Source)
	at com.sun.javaws.jnl.LaunchDesc.getJREMatcher(Unknown Source)
	at com.sun.javaws.jnl.LaunchDesc.isSecureJVMArgs(Unknown Source)
	at com.sun.javaws.LaunchDownload.checkSignedResourcesHelper(Unknown Source)
	at com.sun.javaws.LaunchDownload.checkSignedResources(Unknown Source)
	at com.sun.javaws.Launcher.prepareLaunchFile(Unknown Source)
	at com.sun.javaws.Launcher.prepareToLaunch(Unknown Source)
	at com.sun.javaws.Launcher.launch(Unknown Source)
	at com.sun.javaws.Main.launchApp(Unknown Source)
	at com.sun.javaws.Main.continueInSecureThread(Unknown Source)
	at com.sun.javaws.Main$1.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)


REPRODUCIBILITY :
This bug can be reproduced always.

---------- BEGIN SOURCE ----------
Please go to http://sutrosoftware.com to launch the Web Start app in question.
---------- END SOURCE ----------

CUSTOMER SUBMITTED WORKAROUND :
Have not found one.

Release Regression From : 5.0
The above release value was the last known release where this 
bug was not reproducible. Since then there has been a regression.

Comments
SUGGESTED FIX we should only apply the null check if ld is applicationDescriptor ? this seems to fix the bug: if(ld.isApplicationDescriptor() && null==selectedJREDesc) { throw new InternalError("selectedJREDesc null"); }
05-09-2008

EVALUATION Problem is in DefaultMatchJRE.java, method endTraversal, it always assume we will get a selectedJREDesc: if(null==selectedJREDesc) { throw new InternalError("selectedJREDesc null"); } So in this case, we are parsing an extension-ld with no <resources> in it, and hence selectedJREDesc is null.
05-09-2008