Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8080670

(signed) JNLP files with properties fail on JRE1.8.0_40 and up

    XMLWordPrintable

    Details

    • Type: Bug
    • Status: Closed
    • Priority: P3
    • Resolution: Cannot Reproduce
    • Affects Version/s: 8u40
    • Fix Version/s: None
    • Component/s: deploy
    • Subcomponent:
    • Introduced In Build:
      b09
    • Introduced In Version:
    • CPU:
      x86_64
    • OS:
      linux

      Description

      FULL PRODUCT VERSION :
      java version "1.8.0_45"
      Java(TM) SE Runtime Environment (build 1.8.0_45-b14)
      Java HotSpot(TM) 64-Bit Server VM (build 25.45-b02, mixed mode)


      ADDITIONAL OS VERSION INFORMATION :
      Multiple OS versions, including MacOS and Linux 64-bit (3.11.10-29-desktop 64-bit OpenSUSE kernel).

      A DESCRIPTION OF THE PROBLEM :
      When starting javaws from the commandline using a remote and signed jnlp file (either using a template or actual jnlp inside the signed jar, following the guidelines), the properties inside the jnlp file are transformed into a base64-encoded blob which is then added as value for -Djnlpx.vmargs= commandline option. The result is that java complains that it cannot find the main class (since it interprets the base64-encoded blob as such).
      It can be tested using the application currently at
      https://www.nikhef.nl/~msalle/jgridstart/jgridstart.jnlp


      REGRESSION. Last worked in version 8u31

      ADDITIONAL REGRESSION INFORMATION:
      Using JRE 1.8.0_40 or higher I see the reported failure, for version 1.8.0_31 it still works as expected, also for all JRE1.7.0 versions (incl. 79) it works.

      STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
      - Remove .java to prevent any different version from being used
      - export JAVA_HOME=<the jre1.8.0_45 installation directory>
      - export JAVA_ROOT=$JAVA_HOME
      - export JAVA_BINDIR=$JAVA_HOME/bin
      - export PATH=$JAVA_BINDIR:$PATH
      - javaws -verbose https://www.nikhef.nl/~msalle/jgridstart/jgridstart.jnlp
      Notice it does not start the actual application.

      Run the same using
      https://ca.dutchgrid.nl/start/jgridstart.jnlp
      (which has no properties) and see it succeed.


      EXPECTED VERSUS ACTUAL BEHAVIOR :
      EXPECTED -
      application starts up as normal.
      ACTUAL -
      verification of certificate and splash seen, then stop. A strace of the java process shows it fails to find the main class (it has the base64 encoded blob which is misinterpreted for the class name).

      ERROR MESSAGES/STACK TRACES THAT OCCUR :
      When running javaws through strace -s2048 -ologfile -f javaws ...
      I find the following error in the logfile:
      "Error: Could not find or load main class LURqbmxwLmpncmlkc3RhcnQuZGVmYXVsdHMuY291bnRyeT1OTAAtRGpubHAuamdyaWRzdGFydC5kZWZhdWx0cy5sZXZlbD1tZWRpdW0ALURqbmxwLmpncmlkc3RhcnQub3JnLmhyZWY9Y2VydF9zaWdudXAuY29uZgA="
      Note that the base64 decodes to the different properties set in the jnlp file.


      REPRODUCIBILITY :
      This bug can be reproduced always.

      CUSTOMER SUBMITTED WORKAROUND :
      The only workaround is not to use any properties in the jnlp file.

        Attachments

          Activity

            People

            Assignee:
            herrick Andy Herrick (Inactive)
            Reporter:
            webbuggrp Webbug Group
            Votes:
            0 Vote for this issue
            Watchers:
            8 Start watching this issue

              Dates

              Created:
              Updated:
              Resolved: