2013-10-21 3 views
6

Der Spaß von Java 7u45 gibt weiter. Diesmal ist es ein Deadlock innerhalb von Webstart. Dies geschieht sehr konstant (jedes Mal), wenn eine große Anwendung gestartet wird (~ 100 Gläser).neuer Deadlock Bug in 7u45 Webstart?

Hat noch jemand in diese oder irgendwelche Umgehungen geraten? Anders als zu 1.7.0_40 zurückzukehren?

Danke,

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. 
+2

Wenn Sie einen JVM/JRE/JDK-Fehler gefunden haben, melden Sie ihn bitte bei Oracle. http://www.oracle.com/technetwork/java/javase/bugreports-140511.html –

+0

Ich plane zu, aber Oracle Feedback zu Fehlerberichten ist nur "Danke". Keine Antwort, und Sie können den Fehler nicht einmal sehen, wenn Sie ihn akzeptieren. Ich würde mich noch ein wenig mehr darum kümmern und sehen, ob ich in deploy.jar zwischen 7u40 und 7u45 finden konnte, was sie verändert haben. –

+1

Der Fehler stammt von einem neuen Code-Block, der in der CacheEntry-Klasse in deploy.jar zwischen 7u40 und 7u45 in getJarFile() hinzugefügt wurde. Ich habe den Fehler jetzt eingereicht. Mit etwas Glück werden sie vielleicht den Fehler veröffentlichen. (Hören Sie Larry?) –

Antwort

1

Der Bug-Report ich in meinem Kommentar erwähnt wird nun angenommen.

Es sieht jedoch so aus, als ob seine ID als Teil dieses Prozesses geändert wurde. Es wurde vom Namespace JI- in den Namespace verschoben: https://bugs.openjdk.java.net/browse/JI-9007571 wird jetzt an https://bugs.openjdk.java.net/browse/JDK-8027029 umgeleitet. Das Problem kann jetzt auch unter http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=8027029 gesehen werden.

Der Fix scheint zur Aufnahme in 7u51 im Januar in Diskussion zu sein.

Unsere Stack-Spuren sind ähnlich - der Deadlock selbst scheint identisch zu sein. In unserem Fall haben wir zwei Applets auf der Seite, die gleichzeitig geladen werden.

"thread applet-cl.applet.TutorApplet-2" prio=4 tid=0x04f21000 nid=0x528 waiting for monitor entry [0x0652f000] 
    java.lang.Thread.State: BLOCKED (on object monitor) 
    at com.sun.deploy.cache.MemoryCache.getLoadedResource(Unknown Source) 
    - waiting to lock <0x29d288b8> (a java.lang.Class for com.sun.deploy.cache.MemoryCache) 
    at com.sun.deploy.cache.CachedJarFile.getCacheEntry(Unknown Source) 
    - locked <0x247a4f90> (a com.sun.deploy.cache.CachedJarFile) 
    at com.sun.deploy.cache.CachedJarFile.getManifest(Unknown Source) 
    - locked <0x247a4f90> (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 <0x29eccc00> (a com.sun.deploy.cache.CacheEntry) 
    at com.sun.javaws.security.SigningInfo.check(Unknown Source) 
    at com.sun.javaws.security.JNLPSignedResourcesHelper.checkSignedResourcesHelper(Unknown Source) 
    at com.sun.javaws.security.JNLPSignedResourcesHelper.checkSignedResources(Unknown Source) 
    at sun.plugin2.applet.JNLP2Manager.prepareLaunchFile(Unknown Source) 
    at sun.plugin2.applet.JNLP2Manager.loadJarFiles(Unknown Source) 
    at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source) 
    at java.lang.Thread.run(Unknown Source) 

"thread applet-cl.applet.TTSApplet-1" prio=4 tid=0x04f1f800 nid=0xa40 waiting for monitor entry [0x0600f000] 
    java.lang.Thread.State: BLOCKED (on object monitor) 
    at com.sun.deploy.cache.CacheEntry.storageFilesExist(Unknown Source) 
    - waiting to lock <0x29eccc00> (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 <0x29d288b8> (a java.lang.Class for com.sun.deploy.cache.MemoryCache) 
    at com.sun.deploy.cache.MemoryCache.getLoadedResource(Unknown Source) 
    - locked <0x29d288b8> (a java.lang.Class for com.sun.deploy.cache.MemoryCache) 
    at com.sun.deploy.cache.Cache.getCacheEntry(Unknown Source) 
    at com.sun.deploy.cache.Cache.getCacheEntry(Unknown Source) 
    at com.sun.deploy.cache.Cache.getCachedResourceFilePath(Unknown Source) 
    at com.sun.deploy.cache.ResourceProviderImpl.getCachedResourceFilePath(Unknown Source) 
    at com.sun.javaws.security.JNLPSignedResourcesHelper.getSignedJNLPBits(Unknown Source) 
    at com.sun.javaws.security.JNLPSignedResourcesHelper.getSignedJNLPFile(Unknown Source) 
    at com.sun.javaws.security.JNLPSignedResourcesHelper.checkSignedLaunchDescHelper(Unknown Source) 
    at com.sun.javaws.security.JNLPSignedResourcesHelper.checkSignedLaunchDesc(Unknown Source) 
    at sun.plugin2.applet.JNLP2Manager.prepareLaunchFile(Unknown Source) 
    at sun.plugin2.applet.JNLP2Manager.loadJarFiles(Unknown Source) 
    at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source) 
    at java.lang.Thread.run(Unknown Source)