2013-10-21 6 views
6

java 7u45からの楽しみは引き続き与える。今回はウェブスタート内のデッドロックです。これは非常に一貫して(毎回)大きなアプリケーション(〜100個)を起動しています。7u45 Webstartの新しいデッドロックバグ?

他に誰かがこの問題に遭遇したか、または回避策を知っていますか? 1.7.0_40に戻っている以外は?

おかげで、

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

JVM/JRE/JDKのバグを発見した場合は、Oracleに報告してください。 http://www.oracle.com/technetwork/java/javase/bugreports-140511.html –

+0

私は予定していますが、バグレポートに関するoracleのフィードバックは単に「ありがとう」です。レスポンスがなく、バグを受け入れることもできません。私はもう少しこれを突き止めて、7u40と7u45の間でdeploy.jarで変更されたものが見つかるかどうか確認します。 –

+1

バグは、7u40と7u45の間のdeploy.jarのCacheEntryクラスのgetJarFile()に追加された新しいコードブロックに由来します。私は今バグを提出しました。運があれば、バグを公開するかもしれません。 (あなたはLarryを聞いていますか?) –

答えて

1

は、私は私のコメントで述べたバグレポートは現在受け入れられてきました。

IDはそのプロセスの一部として変更されたようです。 JI-名前空間からJDK-名前空間に移動しました。https://bugs.openjdk.java.net/browse/JI-9007571https://bugs.openjdk.java.net/browse/JDK-8027029にリダイレクトされました。問題は今でもhttp://bugs.sun.com/bugdatabase/view_bug.do?bug_id=8027029に見ることができます。

1月のため、この修正は7u51に含まれているようです。

私たちのスタックトレースは似ています - デッドロック自体は同一であるようです。私たちの場合、ページには同時に読み込んでいる2つのアプレットがあります。

"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) 
関連する問題