This Bugzilla instance is a read-only archive of historic NetBeans bug reports. To report a bug in NetBeans please follow the project's instructions for reporting issues.

Bug 211721 - Deadlock between Logger and TopSecurityManager
Summary: Deadlock between Logger and TopSecurityManager
Status: RESOLVED FIXED
Alias: None
Product: platform
Classification: Unclassified
Component: Filesystems (show other bugs)
Version: 7.2
Hardware: Other Linux
: P2 normal (vote)
Assignee: Jaroslav Tulach
URL:
Keywords:
: 211724 211725 (view as bug list)
Depends on:
Blocks:
 
Reported: 2012-04-25 15:06 UTC by Jaroslav Tulach
Modified: 2012-04-27 10:00 UTC (History)
1 user (show)

See Also:
Issue Type: DEFECT
Exception Reporter:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Jaroslav Tulach 2012-04-25 15:06:12 UTC
Found one Java-level deadlock:
=============================
"close modules":
  waiting to lock monitor 0x00007f07380046c8 (object 0x00000000ec8caf48, a java.util.logging.LogManager),
  which is held by "AWT-EventQueue-1"
"AWT-EventQueue-1":
  waiting to lock monitor 0x00007f06e4007e98 (object 0x00000000ec79e698, a sun.misc.Launcher$AppClassLoader),
  which is held by "main"
"main":
  waiting to lock monitor 0x00007f07380046c8 (object 0x00000000ec8caf48, a java.util.logging.LogManager),
  which is held by "AWT-EventQueue-1"

Java stack information for the threads listed above:
===================================================
"close modules":
 java.util.logging.LogManager.initializeGlobalHandlers(LogManager.java:1020)
        - waiting to lock <0x00000000ec8caf48> (a java.util.logging.LogManager)
 java.util.logging.LogManager.access$1100(LogManager.java:129)
 java.util.logging.LogManager$RootLogger.getHandlers(LogManager.java:1113)
 java.util.logging.Logger.log(Logger.java:474)
 java.util.logging.Logger.doLog(Logger.java:500)
 java.util.logging.Logger.log(Logger.java:564)
 org.openide.util.lookup.MetaInfServicesLookup.search(MetaInfServicesLookup.java:191)
 org.openide.util.lookup.MetaInfServicesLookup.beforeLookup(MetaInfServicesLookup.java:159)
 org.openide.util.lookup.AbstractLookup.lookupItem(AbstractLookup.java:426)
 org.openide.util.lookup.AbstractLookup.lookup(AbstractLookup.java:420)
 org.openide.util.lookup.ProxyLookup.lookup(ProxyLookup.java:216)
 org.openide.LifecycleManager.getDefault(LifecycleManager.java:70)
 org.netbeans.ModuleManager$1.run(ModuleManager.java:1939)
"AWT-EventQueue-1":
 sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:293)
        - waiting to lock <0x00000000ec79e698> (a sun.misc.Launcher$AppClassLoader)
 java.lang.ClassLoader.loadClass(ClassLoader.java:247)
 java.util.logging.LogManager$3.run(LogManager.java:358)
 java.security.AccessController.doPrivileged(Native Method)
 java.util.logging.LogManager.loadLoggerHandlers(LogManager.java:345)
 java.util.logging.LogManager.initializeGlobalHandlers(LogManager.java:1032)
        - locked <0x00000000ec8caf48> (a java.util.logging.LogManager)
 java.util.logging.LogManager.access$1100(LogManager.java:129)
 java.util.logging.LogManager$RootLogger.getHandlers(LogManager.java:1113)
 java.util.logging.Logger.log(Logger.java:474)
 java.util.logging.Logger.doLog(Logger.java:500)
 java.util.logging.Logger.log(Logger.java:544)
 org.openide.filesystems.Ordering.getOrder(Ordering.java:63)
 org.openide.filesystems.FileUtil.getOrder(FileUtil.java:2234)
 org.netbeans.core.windows.persistence.ModeParser.carefullySort(ModeParser.java:590)
 org.netbeans.core.windows.persistence.ModeParser.readTCRefs(ModeParser.java:282)
 org.netbeans.core.windows.persistence.ModeParser.load(ModeParser.java:146)
 org.netbeans.core.windows.persistence.WindowManagerParser.readModes(WindowManagerParser.java:444)
 org.netbeans.core.windows.persistence.WindowManagerParser.load(WindowManagerParser.java:111)
        - locked <0x00000000f9f26608> (a java.lang.Object)
 org.netbeans.core.windows.persistence.PersistenceManager.loadWindowSystem(PersistenceManager.java:1156)
 org.netbeans.core.windows.PersistenceHandler.load(PersistenceHandler.java:128)
 org.netbeans.core.windows.WindowSystemImpl.load(WindowSystemImpl.java:81)
 org.netbeans.core.GuiRunLevel$InitWinSys.run(GuiRunLevel.java:234)
 java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
 java.awt.EventQueue.dispatchEventImpl(EventQueue.java:646)
 java.awt.EventQueue.access$000(EventQueue.java:84)
 java.awt.EventQueue$1.run(EventQueue.java:607)
 java.awt.EventQueue$1.run(EventQueue.java:605)
 java.security.AccessController.doPrivileged(Native Method)
 java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
 java.awt.EventQueue.dispatchEvent(EventQueue.java:616)
 org.netbeans.core.TimableEventQueue.dispatchEvent(TimableEventQueue.java:158)
 java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269)
 java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184)
 java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174)
 java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
 java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
 java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
"main":
 java.util.logging.LogManager.initializeGlobalHandlers(LogManager.java:1020)
        - waiting to lock <0x00000000ec8caf48> (a java.util.logging.LogManager)
 java.util.logging.LogManager.access$1100(LogManager.java:129)
 java.util.logging.LogManager$RootLogger.getHandlers(LogManager.java:1113)
 java.util.logging.Logger.log(Logger.java:474)
 java.util.logging.Logger.doLog(Logger.java:500)
 java.util.logging.Logger.log(Logger.java:564)
 org.netbeans.modules.masterfs.filebasedfs.utils.FileChangedManager.pingIO(FileChangedManager.java:250)
 org.netbeans.modules.masterfs.filebasedfs.utils.FileChangedManager.checkRead(FileChangedManager.java:119)
 org.netbeans.TopSecurityManager.notifyRead(TopSecurityManager.java:179)
 org.netbeans.TopSecurityManager.checkRead(TopSecurityManager.java:328)
 java.io.File.exists(File.java:731)
 sun.misc.URLClassPath$FileLoader.getResource(URLClassPath.java:999)
 sun.misc.URLClassPath.getResource(URLClassPath.java:169)
 java.net.URLClassLoader$1.run(URLClassLoader.java:194)
 java.security.AccessController.doPrivileged(Native Method)
 java.net.URLClassLoader.findClass(URLClassLoader.java:190)
 java.lang.ClassLoader.loadClass(ClassLoader.java:306)
        - locked <0x00000000ec79e698> (a sun.misc.Launcher$AppClassLoader)
 sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
        - locked <0x00000000ec79e698> (a sun.misc.Launcher$AppClassLoader)
 java.lang.ClassLoader.loadClass(ClassLoader.java:247)
 org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.startTest(JUnitTestRunner.java:481)
 org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner$3.startTest(JUnitTestRunner.java:1011)
 junit.framework.TestResult.startTest(TestResult.java:155)
 junit.framework.TestResult.run(TestResult.java:107)
 junit.framework.TestCase.run(TestCase.java:124)
 org.netbeans.junit.NbTestCase.run(NbTestCase.java:260)
 junit.framework.TestSuite.runTest(TestSuite.java:243)
 org.netbeans.junit.NbModuleSuite$NbTestSuiteLogCheck.runTest(NbModuleSuite.java:1474)
 junit.framework.TestSuite.run(TestSuite.java:238)
 junit.framework.TestSuite.runTest(TestSuite.java:243)
 junit.framework.TestSuite.run(TestSuite.java:238)
 org.netbeans.junit.NbModuleSuite$S.runInRuntimeContainer(NbModuleSuite.java:932)
 org.netbeans.junit.NbModuleSuite$S.access$100(NbModuleSuite.java:660)
 org.netbeans.junit.NbModuleSuite$S$1.protect(NbModuleSuite.java:679)
 junit.framework.TestResult.runProtected(TestResult.java:128)
 org.netbeans.junit.NbModuleSuite$S.run(NbModuleSuite.java:677)
 org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.run(JUnitTestRunner.java:422)
 org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.launch(JUnitTestRunner.java:931)
 org.apache.tools.ant.taskdefs.optional.junit.JUnitTestRunner.main(JUnitTestRunner.java:785)

Found 1 deadlock.
Comment 1 Jaroslav Tulach 2012-04-25 15:09:19 UTC
ergonomics#717741a348de
Comment 2 Jaroslav Tulach 2012-04-25 16:05:57 UTC
*** Bug 211724 has been marked as a duplicate of this bug. ***
Comment 3 Jaroslav Tulach 2012-04-25 16:07:36 UTC
*** Bug 211725 has been marked as a duplicate of this bug. ***
Comment 4 Quality Engineering 2012-04-27 10:00:27 UTC
Integrated into 'main-golden', will be available in build *201204270400* on http://bits.netbeans.org/dev/nightly/ (upload may still be in progress)
Changeset: http://hg.netbeans.org/main-golden/rev/717741a348de
User: Jaroslav Tulach <jtulach@netbeans.org>
Log: #211721: Try to prevent initialization of loggers inside of SecurityManager calls