2013-10-21 9 views
6

जावा 7u45 से मजा देने पर रहता है। इस बार यह वेबस्टार्ट के भीतर एक डेडलॉक है। यह एक बड़े आवेदन (~ 100 जार) लॉन्च करने (हर बार) बहुत लगातार हो रहा है।नई डेडलॉक बग?

क्या कोई और इस में भाग लेता है या किसी भी कामकाज के बारे में जानता है? 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 बग मिला है, तो कृपया इसे ओरेकल को रिपोर्ट करें। http://www.oracle.com/technetwork/java/javase/bugreports-140511.html –

+0

मैं योजना बना रहा हूं, लेकिन बग रिपोर्ट पर ओरेकल की प्रतिक्रिया सिर्फ "धन्यवाद" है। कोई प्रतिक्रिया नहीं, और जब भी वे इसे स्वीकार करते हैं तो आप बग भी नहीं देख सकते हैं। मैं इस पर थोड़ा और आगे बढ़ने जा रहा था और देख सकता था कि क्या मैं 7u40 और 7u45 के बीच तैनाती में बदल सकता हूं। –

+1

बग 7J40 और 7u45 के बीच deploy.jar में cacheEntry क्लास में getJarFile() में जोड़े गए कोड के एक नए ब्लॉक से आता है। मैंने अब बग जमा कर दिया है। भाग्य के साथ, शायद वे बग सार्वजनिक कर देंगे। (क्या आप लैरी सुन रहे हैं?) –

उत्तर

1

बग रिपोर्ट मैं अपने टिप्पणी में उल्लेख किया है अब स्वीकार किया गया है।

ऐसा लगता है कि उस प्रक्रिया के हिस्से के रूप में इसकी आईडी बदल गई है। यह JI- नामस्थान से JDK- नामस्थान में स्थानांतरित हो गया: https://bugs.openjdk.java.net/browse/JI-9007571 अब https://bugs.openjdk.java.net/browse/JDK-8027029 पर रीडायरेक्ट करता है। इस मुद्दे को अब भी http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=8027029 पर देखा जा सकता है।

यह तय जनवरी में होने के कारण 7u51 में शामिल करने के लिए चर्चा में है।

हमारे स्टैक निशान समान हैं - डेडलॉक स्वयं समान दिखता है। हमारे मामले में हमारे पास पृष्ठ में दो एप्लेट हैं जो एक ही समय में लोड हो रहे हैं।

"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) 
संबंधित मुद्दे