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

Deadlock in caching code launching application with a large number of jars (~100).

    Details

    • Subcomponent:
    • Introduced In Build:
      b02
    • Introduced In Version:
    • Resolved In Build:
      b06
    • OS:
      windows_7
    • Verification:
      Not verified

      Backports

        Description

        FULL PRODUCT VERSION :
        java version "1.7.0_45"
        Java(TM) SE Runtime Environment (build 1.7.0_45-b18)
        Java HotSpot(TM) Client VM (build 24.45-b08, mixed mode)


        ADDITIONAL OS VERSION INFORMATION :
        Microsoft Windows [Version 6.1.7601]


        A DESCRIPTION OF THE PROBLEM :
        deadlock launching jnlp application.

        REGRESSION. Last worked in version 7u40

        ADDITIONAL REGRESSION INFORMATION:
        1.7.0_40.

        STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
        create a large jnlp application. i.e. a netbeans platform app launched via webstart.

        EXPECTED VERSUS ACTUAL BEHAVIOR :
        EXPECTED -
        launches.
        ACTUAL -
        deadlocks.

        ERROR MESSAGES/STACK TRACES THAT OCCUR :
        Found one Java-level deadlock:
        =============================
        "Java Web Start Main Thread":
          waiting to lock monitor 0x066368bc (object 0x29e65428, a java.lang.Class),
          which is held by "Finalizer"
        "Finalizer":
          waiting to lock monitor 0x00dbc954 (object 0x2a1b52b0, a com.sun.deploy.cache.CacheEntry),
          which is held by "Java Web Start Main Thread"

        Java stack information for the threads listed above:
        ===================================================
        "Java Web Start Main Thread":
            at com.sun.deploy.cache.MemoryCache.getLoadedResource(Unknown Source)
            - waiting to lock <0x29e65428> (a java.lang.Class for com.sun.deploy.cache.MemoryCache)
            at com.sun.deploy.cache.CachedJarFile.getCacheEntry(Unknown Source)
            - locked <0x24810058> (a com.sun.deploy.cache.CachedJarFile)
            at com.sun.deploy.cache.CachedJarFile.getManifest(Unknown Source)
            - locked <0x24810058> (a com.sun.deploy.cache.CachedJarFile)
            at com.sun.deploy.util.JarUtil.isBlobSigned(Unknown Source)
            at com.sun.deploy.cache.CacheEntry.getJarFile(Unknown Source)
            - locked <0x2a1b52b0> (a com.sun.deploy.cache.CacheEntry)
            at com.sun.deploy.security.DeployManifestChecker.verify(Unknown Source)
            at com.sun.javaws.security.AppPolicy.grantUnrestrictedAccess(Unknown Source)
            at com.sun.javaws.security.JNLPSignedResourcesHelper.checkSignedResourcesHelper(Unknown Source)
            at com.sun.javaws.security.JNLPSignedResourcesHelper.checkSignedResources(Unknown Source)
            at com.sun.javaws.Launcher.prepareResources(Unknown Source)
            at com.sun.javaws.Launcher.prepareAllResources(Unknown Source)
            at com.sun.javaws.Launcher.prepareToLaunch(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.access$000(Unknown Source)
            at com.sun.javaws.Main$1.run(Unknown Source)
            at java.lang.Thread.run(Unknown Source)
        "Finalizer":
            at com.sun.deploy.cache.CacheEntry.storageFilesExist(Unknown Source)
            - waiting to lock <0x2a1b52b0> (a com.sun.deploy.cache.CacheEntry)
            at com.sun.deploy.cache.MemoryCache.validateResource(Unknown Source)
            at com.sun.deploy.cache.MemoryCache.getLoadedResource(Unknown Source)
            - locked <0x29e65428> (a java.lang.Class for com.sun.deploy.cache.MemoryCache)
            at com.sun.deploy.cache.CachedJarFile.isReferencedTo(Unknown Source)
            at com.sun.deploy.cache.CachedJarFile.close(Unknown Source)
            at java.util.zip.ZipFile.finalize(Unknown Source)
            at java.lang.ref.Finalizer.invokeFinalizeMethod(Native Method)
            at java.lang.ref.Finalizer.runFinalizer(Unknown Source)
            at java.lang.ref.Finalizer.access$100(Unknown Source)
            at java.lang.ref.Finalizer$FinalizerThread.run(Unknown Source)

        Found 1 deadlock.

        REPRODUCIBILITY :
        This bug can be reproduced always.

        ---------- BEGIN SOURCE ----------
        the deadlock seems to be from new code added to getJarFile() in com.sun.deploy.cache.CacheEntry in deploy.jar between 7u40 and 7u45.

        are you TRYING to kill webstart? i'm sure you're not, but it sure seems that way since 6u19. </rant!>



        ---------- END SOURCE ----------

          Attachments

            Issue Links

              Activity

                People

                • Assignee:
                  dcherepanov Dmitry Cherepanov
                  Reporter:
                  alanb Alan Bateman
                • Votes:
                  0 Vote for this issue
                  Watchers:
                  7 Start watching this issue

                  Dates

                  • Due:
                    Created:
                    Updated:
                    Resolved: