JDK-8195748 : When in is present "progress-class" attribute javaws cannot start
  • Type: Bug
  • Component: deploy
  • Sub-Component: webstart
  • Affected Version: 8u161
  • Priority: P3
  • Status: Resolved
  • Resolution: Fixed
  • OS: windows_7
  • CPU: x86_64
  • Submitted: 2018-01-18
  • Updated: 2018-10-16
  • Resolved: 2018-01-29
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 8
8u171 b04Fixed
Related Reports
Duplicate :  
Description
FULL PRODUCT VERSION :
java version "1.8.0_161"
Java(TM) SE Runtime Environment (build 1.8.0_161-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.161-b12, mixed mode)

ADDITIONAL OS VERSION INFORMATION :
Windows 7

A DESCRIPTION OF THE PROBLEM :
When calling javaws with an jnlp that contains the "progress-class" the process hang and windows shows an error dialog. An error can be also seen in event viewer.

REGRESSION.  Last worked in version 8u151

STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
Download the jnlp file from AccessibleScrollDemo Example from https://docs.oracle.com/javase/tutorial/uiswing/examples/misc/index.html and add the "progress-class" parameter into "application-desc":
<application-desc main-class="misc.AccessibleScrollDemo" progress-class="misc.AccessibleScrollDemo"/>

The class mentioned inside is not relevant.

EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
The apllication starts.
ACTUAL -
The process hang and windows shows an error dialog. An error can be also seen in event viewer.

ERROR MESSAGES/STACK TRACES THAT OCCUR :
Problemsignatur:
  Problemereignisname:	APPCRASH
  Anwendungsname:	javaws.exe
  Anwendungsversion:	11.161.2.12
  Anwendungszeitstempel:	5a39c695
  Fehlermodulname:	javaws.exe
  Fehlermodulversion:	11.161.2.12
  Fehlermodulzeitstempel:	5a39c695
  Ausnahmecode:	c0000005
  Ausnahmeoffset:	0000000000001117
  Betriebsystemversion:	6.1.7601.2.1.0.256.27
  Gebietsschema-ID:	1031
  Zusatzinformation 1:	9b3a
  Zusatzinformation 2:	9b3ae79fdc81822ca15b8a5b9096ef21
  Zusatzinformation 3:	af71
  Zusatzinformation 4:	af71adee7de11d08af6c35caaa467030

REPRODUCIBILITY :
This bug can be reproduced always.

CUSTOMER SUBMITTED WORKAROUND :
Remove "progress-class" from jnlp. 


Comments
workaround: One way to work around this is to launch the jnlp file with a full url to the jnlp file: "javaws http://example.com/AccessibleScrollDemo.jnlp" this can be accomplished with a link in a web page by using the jnlp URL scheme handler feature: JDK-8055464 by having: <a href="jnlp:http://example.com/AccessibleScrollDemo.jnlp">AccessibleScrollDemo</a> (ie using jnlp:http:// protocol instead of http://) or just: <a href="jnlp://example.com/AccessibleScrollDemo.jnlp">AccessibleScrollDemo</a> Another workaround is to add a custom splash to the jnlp file: <icon kind="splash" href="http://example.com/appIcon.jpg" /> then import the app silently: "javaws -import -silent javaws http://example.com/AccessibleScrollDemo.jnlp" after it is silently imported it should then run from link w/o crashing (showing the custom splash image).
24-01-2018

Crucible review: https://java.se.oracle.com/code/cru/CR-JDK8UDEV-458
22-01-2018

note also - reason that the relaunched splash screen version of javaws seg faults is the code: if ((argc >= 3) && (DEPLOY_STRCMP(_T("-splash"), argv[1]) == 0)) { int port = DEPLOY_ATOI(argv[2]); char *splashFileMBCS = DEPLOY_NEW_MULTIBYTE(argv[3]); when launching "javaws -splash 1" argc is 3 so call to de-reference argv[3] is a seg fault. should be if ((argc > 3) && (... or if ((argc >= 4) && ( This has been in javaws native code since day one
19-01-2018

although I'm not sure what changed since b152, looking at the code the problem seems to be that if not FX, and custom splash is not defined in JNLP, and progress-class is defined in jnlp, then splashFile.getAppSplash(..., TCHAR **splash) will set *splash to NULL. then in launcher.c, since doSplash is still true, we may call showSplashScreen(splash) which will launch a new javaws process with args ("javaws", "-splash", <port>} (missing next arg of file path). which will just seg fault. simple solution is to change: if (doSplash) { to is (doSplash and splash != NULL) {
19-01-2018

we don't have this problem with mac or with JDK9 or later because we always use the AWT splash and just pass vm arg: "-splash:<splashFile>" and passing "-splash:(null)" is cleanly ignored.
19-01-2018

Reported with: 8u151, 8u161 Windows 7 Calling javaws with an jnlp that contains the "progress-class" the process hang and windows shows an error dialog Checked with: Windows 10 8u151, 8u161, 9.0.4 and 10 ea b39 Results: ========= 8u151: OK 8u152: OK 8u161: Fail 8u172 b03: Fail 9.0.4: Pass 10 ea b40: Pass Run the test as specified in the description. Edited the downloaded jnlp file (see attached) and run with respective JDK versions. The JWS applicatuion ran fine with 8u151 as well as 8u152, but failes to run with JDK 8u161. See attached screenshot. This seems a regression in 8u161. To verify, run the attached jnlp with respective versions.
19-01-2018