Bug 193065 - [70cat] Deadlock in project.ui.support.NodeFactorySupport$DelegateChildren
[70cat] Deadlock in project.ui.support.NodeFactorySupport$DelegateChildren
Status: RESOLVED FIXED
Product: projects
Classification: Unclassified
Component: Generic Projects UI
7.0
Macintosh (x86) Mac OS X
: P3 (vote)
: 7.2
Assigned To: Jesse Glick
issues@projects
: RANDOM, THREAD
: 202072 (view as bug list)
Depends on:
Blocks: 130354 135572
  Show dependency treegraph
 
Reported: 2010-12-08 19:44 UTC by jmborer
Modified: 2012-04-14 09:44 UTC (History)
5 users (show)

See Also:
Issue Type: DEFECT
:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description jmborer 2010-12-08 19:44:35 UTC
It occured at application start while it tries to restore the tabs with opened files and projects. Everything is frozen. I use Java 1.6u22 and already know about deadlocks, but they are related to BeanInfo stuff. Here it seems not be the case. WIth VisualVM I got that thread dump:


2010-12-08 20:37:40
Full thread dump Java HotSpot(TM) 64-Bit Server VM (17.1-b03-307 mixed mode):

"RMI TCP Connection(2)-192.168.1.34" daemon prio=9 tid=1019a6800 nid=0x15742e000 in Object.wait() [15742b000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	- waiting on <106d60fe0> (a com.sun.jmx.remote.internal.ArrayNotificationBuffer)
	at com.sun.jmx.remote.internal.ArrayNotificationBuffer.fetchNotifications(ArrayNotificationBuffer.java:417)
	- locked <106d60fe0> (a com.sun.jmx.remote.internal.ArrayNotificationBuffer)
	at com.sun.jmx.remote.internal.ArrayNotificationBuffer$ShareBuffer.fetchNotifications(ArrayNotificationBuffer.java:209)
	at com.sun.jmx.remote.internal.ServerNotifForwarder.fetchNotifs(ServerNotifForwarder.java:258)
	at javax.management.remote.rmi.RMIConnectionImpl$2.run(RMIConnectionImpl.java:1227)
	at javax.management.remote.rmi.RMIConnectionImpl$2.run(RMIConnectionImpl.java:1225)
	at javax.management.remote.rmi.RMIConnectionImpl.fetchNotifications(RMIConnectionImpl.java:1231)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:305)
	at sun.rmi.transport.Transport$1.run(Transport.java:159)
	at java.security.AccessController.doPrivileged(Native Method)
	at sun.rmi.transport.Transport.serviceCall(Transport.java:155)
	at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:535)
	at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:790)
	at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:649)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:680)

   Locked ownable synchronizers:
	- <106ada688> (a java.util.concurrent.locks.ReentrantLock$NonfairSync)

"JMX server connection timeout 203" daemon prio=9 tid=1029e4000 nid=0x171a01000 in Object.wait() [171a00000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	- waiting on <106b984c8> (a [I)
	at com.sun.jmx.remote.internal.ServerCommunicatorAdmin$Timeout.run(ServerCommunicatorAdmin.java:150)
	- locked <106b984c8> (a [I)
	at java.lang.Thread.run(Thread.java:680)

   Locked ownable synchronizers:
	- None

"RMI Scheduler(0)" daemon prio=9 tid=1019a5800 nid=0x170d01000 waiting on condition [170d00000]
   java.lang.Thread.State: TIMED_WAITING (parking)
	at sun.misc.Unsafe.park(Native Method)
	- parking to wait for  <106abacf0> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
	at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:198)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2025)
	at java.util.concurrent.DelayQueue.take(DelayQueue.java:164)
	at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:609)
	at java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:602)
	at java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:947)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
	at java.lang.Thread.run(Thread.java:680)

   Locked ownable synchronizers:
	- None

"RMI TCP Connection(1)-192.168.1.34" daemon prio=9 tid=101bd6800 nid=0x1709c7000 runnable [1709c6000]
   java.lang.Thread.State: RUNNABLE
	at java.net.SocketInputStream.socketRead0(Native Method)
	at java.net.SocketInputStream.read(SocketInputStream.java:129)
	at java.io.BufferedInputStream.fill(BufferedInputStream.java:218)
	at java.io.BufferedInputStream.read(BufferedInputStream.java:237)
	- locked <106b43580> (a java.io.BufferedInputStream)
	at java.io.FilterInputStream.read(FilterInputStream.java:66)
	at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:517)
	at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:790)
	at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:649)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:680)

   Locked ownable synchronizers:
	- <106ad4fc8> (a java.util.concurrent.locks.ReentrantLock$NonfairSync)

"RMI TCP Accept-0" daemon prio=9 tid=101bcf800 nid=0x1707c4000 runnable [1707c3000]
   java.lang.Thread.State: RUNNABLE
	at java.net.PlainSocketImpl.socketAccept(Native Method)
	at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:390)
	- locked <106abee20> (a java.net.SocksSocketImpl)
	at java.net.ServerSocket.implAccept(ServerSocket.java:453)
	at java.net.ServerSocket.accept(ServerSocket.java:421)
	at sun.management.jmxremote.LocalRMIServerSocketFactory$1.accept(LocalRMIServerSocketFactory.java:34)
	at sun.rmi.transport.tcp.TCPTransport$AcceptLoop.executeAcceptLoop(TCPTransport.java:369)
	at sun.rmi.transport.tcp.TCPTransport$AcceptLoop.run(TCPTransport.java:341)
	at java.lang.Thread.run(Thread.java:680)

   Locked ownable synchronizers:
	- None

"Attach Listener" daemon prio=9 tid=102fa0800 nid=0x170201000 waiting on condition [00000000]
   java.lang.Thread.State: RUNNABLE

   Locked ownable synchronizers:
	- None

"Parsing & Indexing Loop (201011152355)" daemon prio=1 tid=101e9b000 nid=0x173e04000 waiting on condition [173e03000]
   java.lang.Thread.State: WAITING (parking)
	at sun.misc.Unsafe.park(Native Method)
	- parking to wait for  <10c836690> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
	at java.util.concurrent.locks.LockSupport.park(LockSupport.java:158)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1987)
	at java.util.concurrent.PriorityBlockingQueue.take(PriorityBlockingQueue.java:220)
	at org.netbeans.modules.parsing.impl.TaskProcessor$CompilationJob.run(TaskProcessor.java:581)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
	at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
	at java.util.concurrent.FutureTask.run(FutureTask.java:138)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:680)

   Locked ownable synchronizers:
	- <10c84cb88> (a java.util.concurrent.locks.ReentrantLock$NonfairSync)

"org.netbeans.modules.project.ui.ProjectTab" daemon prio=1 tid=102b1d800 nid=0x173404000 waiting for monitor entry [173403000]
   java.lang.Thread.State: BLOCKED (on object monitor)
	at org.openide.nodes.EntrySupport$Default.getArray(EntrySupport.java:742)
	- waiting to lock <10a3b9688> (a java.lang.Object)
	at org.openide.nodes.EntrySupport$Default.getNodes(EntrySupport.java:169)
	at org.openide.nodes.EntrySupport$Default.getNodes(EntrySupport.java:225)
	at org.openide.nodes.Children.getNodes(Children.java:462)
	at org.netbeans.modules.project.ui.ProjectTab$KeepExpansion.run(ProjectTab.java:428)
	at org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:1418)
	at org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:1960)

   Locked ownable synchronizers:
	- None

"Inactive RequestProcessor thread [Was:TimedSoftReference/org.openide.util.TimedSoftReference]" daemon prio=1 tid=16ecd2000 nid=0x16c195000 in Object.wait() [16c194000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	- waiting on <10a6e6900> (a java.lang.Object)
	at org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:1913)
	- locked <10a6e6900> (a java.lang.Object)

   Locked ownable synchronizers:
	- None

"DestroyJavaVM" prio=5 tid=101a09000 nid=0x100601000 waiting on condition [00000000]
   java.lang.Thread.State: RUNNABLE

   Locked ownable synchronizers:
	- None

"org.netbeans.spi.project.ui.support.NodeFactorySupport" daemon prio=1 tid=101d20800 nid=0x16c5d7000 in Object.wait() [16c5d6000]
   java.lang.Thread.State: WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	- waiting on <10c83b488> (a org.openide.util.Mutex$QueueCell)
	at java.lang.Object.wait(Object.java:485)
	at org.openide.util.Mutex$QueueCell.sleep(Mutex.java:1612)
	- locked <10c83b488> (a org.openide.util.Mutex$QueueCell)
	at org.openide.util.Mutex.enterImpl(Mutex.java:727)
	at org.openide.util.Mutex.enter(Mutex.java:634)
	at org.openide.util.Mutex.access$000(Mutex.java:108)
	at org.openide.util.Mutex$1Exec.run(Mutex.java:1242)
	at org.openide.nodes.Children$ProjectManagerDeadlockDetector.execute(Children.java:1907)
	at org.openide.util.Mutex.postRequest(Mutex.java:1250)
	at org.openide.util.Mutex.postRequest(Mutex.java:1213)
	at org.openide.util.Mutex.postWriteRequest(Mutex.java:585)
	at org.openide.nodes.Children$Keys.applyKeys(Children.java:1551)
	at org.openide.nodes.Children$Keys.setKeys(Children.java:1495)
	at org.netbeans.modules.maven.nodes.DependenciesNode$DependenciesChildren.regenerateKeys(DependenciesNode.java:249)
	at org.netbeans.modules.maven.nodes.DependenciesNodeFactory$NList.keys(DependenciesNodeFactory.java:96)
	at org.netbeans.spi.project.ui.support.NodeFactorySupport$DelegateChildren$1.run(NodeFactorySupport.java:202)
	- locked <10c7d5c88> (a org.netbeans.spi.project.ui.support.NodeFactorySupport$DelegateChildren)
	at org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:1418)
	at org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:1960)

   Locked ownable synchronizers:
	- None

"AWT-EventQueue-1" prio=6 tid=101d21800 nid=0x16f607000 in Object.wait() [16f605000]
   java.lang.Thread.State: WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	- waiting on <10c837658> (a org.openide.util.Mutex$QueueCell)
	at java.lang.Object.wait(Object.java:485)
	at org.openide.util.Mutex$QueueCell.sleep(Mutex.java:1612)
	- locked <10c837658> (a org.openide.util.Mutex$QueueCell)
	at org.openide.util.Mutex.enterImpl(Mutex.java:727)
	at org.openide.util.Mutex.enter(Mutex.java:634)
	at org.openide.util.Mutex.readEnter(Mutex.java:617)
	at org.openide.util.Mutex.readAccess(Mutex.java:362)
	at org.openide.util.Mutex$1R.run(Mutex.java:1307)
	at org.openide.nodes.Children$ProjectManagerDeadlockDetector.execute(Children.java:1907)
	at org.openide.util.Mutex.doWrapperAccess(Mutex.java:1326)
	at org.openide.util.Mutex.readAccess(Mutex.java:354)
	at org.openide.explorer.view.TreeView.validate(TreeView.java:643)
	at java.awt.Container.validateTree(Container.java:1515)
	at java.awt.Container.validateTree(Container.java:1513)
	at java.awt.Container.validateTree(Container.java:1513)
	at java.awt.Container.validateTree(Container.java:1513)
	at java.awt.Container.validateTree(Container.java:1513)
	at java.awt.Container.validateTree(Container.java:1513)
	at java.awt.Container.validateTree(Container.java:1513)
	at java.awt.Container.validate(Container.java:1480)
	- locked <10975efc0> (a java.awt.Component$AWTTreeLock)
	at org.netbeans.core.windows.view.ui.DesktopImpl$LayeredLayout.layoutContainer(DesktopImpl.java:469)
	at java.awt.Container.layout(Container.java:1421)
	at java.awt.Container.doLayout(Container.java:1410)
	at java.awt.Container.validateTree(Container.java:1507)
	at java.awt.Container.validateTree(Container.java:1513)
	at java.awt.Container.validateTree(Container.java:1513)
	at java.awt.Container.validateTree(Container.java:1513)
	at java.awt.Container.validateTree(Container.java:1513)
	at java.awt.Container.validate(Container.java:1480)
	- locked <10975efc0> (a java.awt.Component$AWTTreeLock)
	at javax.swing.RepaintManager.validateInvalidComponents(RepaintManager.java:669)
	at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(SystemEventQueueUtilities.java:124)
	at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:633)
	at org.netbeans.core.TimableEventQueue.dispatchEvent(TimableEventQueue.java:138)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:296)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:211)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:201)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:196)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:188)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

   Locked ownable synchronizers:
	- None

"TimerQueue" daemon prio=5 tid=101bb3800 nid=0x16b23a000 in Object.wait() [16b239000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	- waiting on <10a4ac1b8> (a javax.swing.TimerQueue)
	at javax.swing.TimerQueue.run(TimerQueue.java:232)
	- locked <10a4ac1b8> (a javax.swing.TimerQueue)
	at java.lang.Thread.run(Thread.java:680)

   Locked ownable synchronizers:
	- None

"Thread-5" daemon prio=5 tid=101af3000 nid=0x16bb0b000 in Object.wait() [16bb0a000]
   java.lang.Thread.State: WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	- waiting on <10a1975e0> (a java.util.LinkedList)
	at java.lang.Object.wait(Object.java:485)
	at java.util.prefs.AbstractPreferences$EventDispatchThread.run(AbstractPreferences.java:1461)
	- locked <10a1975e0> (a java.util.LinkedList)

   Locked ownable synchronizers:
	- None

"Thread-4" prio=5 tid=10199b000 nid=0x16f404000 waiting on condition [16f403000]
   java.lang.Thread.State: WAITING (parking)
	at sun.misc.Unsafe.park(Native Method)
	- parking to wait for  <10a236058> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
	at java.util.concurrent.locks.LockSupport.park(LockSupport.java:158)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.await(AbstractQueuedSynchronizer.java:1987)
	at java.util.concurrent.LinkedBlockingQueue.take(LinkedBlockingQueue.java:399)
	at org.netbeans.modules.masterfs.watcher.OSXNotifier.nextEvent(OSXNotifier.java:103)
	at org.netbeans.modules.masterfs.watcher.Watcher$Ext.run(Watcher.java:151)
	at java.lang.Thread.run(Thread.java:680)

   Locked ownable synchronizers:
	- None

"Thread-3" daemon prio=5 tid=101992000 nid=0x16f201000 runnable [16f200000]
   java.lang.Thread.State: RUNNABLE
	at com.sun.jna.Function.invokeVoid(Native Method)
	at com.sun.jna.Function.invoke(Function.java:282)
	at com.sun.jna.Function.invoke(Function.java:223)
	at com.sun.jna.Library$Handler.invoke(Library.java:204)
	at $Proxy6.CFRunLoopRun(Unknown Source)
	at org.netbeans.modules.masterfs.watcher.OSXNotifier$1.run(OSXNotifier.java:132)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
	at java.lang.Thread.run(Thread.java:680)

   Locked ownable synchronizers:
	- <10a1f47d0> (a java.util.concurrent.locks.ReentrantLock$NonfairSync)

"Java2D Disposer" daemon prio=10 tid=101a62000 nid=0x16aca5000 in Object.wait() [16aca4000]
   java.lang.Thread.State: WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	- waiting on <10981fea8> (a java.lang.ref.ReferenceQueue$Lock)
	at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:118)
	- locked <10981fea8> (a java.lang.ref.ReferenceQueue$Lock)
	at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:134)
	at sun.java2d.Disposer.run(Disposer.java:127)
	at java.lang.Thread.run(Thread.java:680)

   Locked ownable synchronizers:
	- None

"AWT-Shutdown" prio=5 tid=102ab2800 nid=0x16aa20000 in Object.wait() [16aa1f000]
   java.lang.Thread.State: WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	- waiting on <10981fed8> (a java.lang.Object)
	at java.lang.Object.wait(Object.java:485)
	at sun.awt.AWTAutoShutdown.run(AWTAutoShutdown.java:265)
	- locked <10981fed8> (a java.lang.Object)
	at java.lang.Thread.run(Thread.java:680)

   Locked ownable synchronizers:
	- None

"AWT-AppKit" daemon prio=5 tid=102a4a000 nid=0x7fff70dbbca0 runnable [00000000]
   java.lang.Thread.State: RUNNABLE

   Locked ownable synchronizers:
	- None

"Poller SunPKCS11-Darwin" daemon prio=1 tid=101918800 nid=0x157688000 waiting on condition [157687000]
   java.lang.Thread.State: TIMED_WAITING (sleeping)
	at java.lang.Thread.sleep(Native Method)
	at sun.security.pkcs11.SunPKCS11$TokenPoller.run(SunPKCS11.java:692)
	at java.lang.Thread.run(Thread.java:680)

   Locked ownable synchronizers:
	- None

"CLI Requests Server" daemon prio=5 tid=102b67000 nid=0x15722b000 runnable [15722a000]
   java.lang.Thread.State: RUNNABLE
	at java.net.PlainSocketImpl.socketAccept(Native Method)
	at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:390)
	- locked <10953e750> (a java.net.SocksSocketImpl)
	at java.net.ServerSocket.implAccept(ServerSocket.java:453)
	at java.net.ServerSocket.accept(ServerSocket.java:421)
	at org.netbeans.CLIHandler$Server.run(CLIHandler.java:1031)

   Locked ownable synchronizers:
	- None

"Active Reference Queue Daemon" daemon prio=1 tid=1018ac800 nid=0x1545d4000 waiting for monitor entry [1545d3000]
   java.lang.Thread.State: BLOCKED (on object monitor)
	at org.netbeans.spi.project.ui.support.NodeFactorySupport$DelegateChildren.removeNotify(NodeFactorySupport.java:249)
	- waiting to lock <10c7d5c88> (a org.netbeans.spi.project.ui.support.NodeFactorySupport$DelegateChildren)
	at org.openide.nodes.Children.callRemoveNotify(Children.java:573)
	at org.openide.nodes.EntrySupport$Default.finalizedChildrenArray(EntrySupport.java:910)
	- locked <10a3b9688> (a java.lang.Object)
	at org.openide.nodes.EntrySupport$Default$ChArrRef.run(EntrySupport.java:994)
	at org.openide.util.lookup.implspi.ActiveQueue$Impl.run(ActiveQueue.java:109)
	at java.lang.Thread.run(Thread.java:680)

   Locked ownable synchronizers:
	- None

"Timer-0" daemon prio=5 tid=10190f000 nid=0x1543d1000 in Object.wait() [1543d0000]
   java.lang.Thread.State: TIMED_WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	- waiting on <1094877d0> (a java.util.TaskQueue)
	at java.util.TimerThread.mainLoop(Timer.java:509)
	- locked <1094877d0> (a java.util.TaskQueue)
	at java.util.TimerThread.run(Timer.java:462)

   Locked ownable synchronizers:
	- None

"Low Memory Detector" daemon prio=5 tid=101839000 nid=0x153f0d000 runnable [00000000]
   java.lang.Thread.State: RUNNABLE

   Locked ownable synchronizers:
	- None

"CompilerThread1" daemon prio=9 tid=101838000 nid=0x153d0a000 waiting on condition [00000000]
   java.lang.Thread.State: RUNNABLE

   Locked ownable synchronizers:
	- None

"CompilerThread0" daemon prio=9 tid=101837800 nid=0x153b07000 waiting on condition [00000000]
   java.lang.Thread.State: RUNNABLE

   Locked ownable synchronizers:
	- None

"Signal Dispatcher" daemon prio=9 tid=101836800 nid=0x153904000 runnable [00000000]
   java.lang.Thread.State: RUNNABLE

   Locked ownable synchronizers:
	- None

"Surrogate Locker Thread (CMS)" daemon prio=5 tid=101836000 nid=0x153701000 waiting on condition [00000000]
   java.lang.Thread.State: RUNNABLE

   Locked ownable synchronizers:
	- None

"Finalizer" daemon prio=8 tid=10182a000 nid=0x153211000 in Object.wait() [153210000]
   java.lang.Thread.State: WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	- waiting on <109548f50> (a java.lang.ref.ReferenceQueue$Lock)
	at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:118)
	- locked <109548f50> (a java.lang.ref.ReferenceQueue$Lock)
	at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:134)
	at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:159)

   Locked ownable synchronizers:
	- None

"Reference Handler" daemon prio=10 tid=101829800 nid=0x15300e000 in Object.wait() [15300d000]
   java.lang.Thread.State: WAITING (on object monitor)
	at java.lang.Object.wait(Native Method)
	- waiting on <109499880> (a java.lang.ref.Reference$Lock)
	at java.lang.Object.wait(Object.java:485)
	at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:116)
	- locked <109499880> (a java.lang.ref.Reference$Lock)

   Locked ownable synchronizers:
	- None

"VM Thread" prio=9 tid=10287a800 nid=0x152e0b000 runnable 

"Gang worker#0 (Parallel GC Threads)" prio=9 tid=102803000 nid=0x102504000 runnable 

"Gang worker#1 (Parallel GC Threads)" prio=9 tid=102804000 nid=0x102707000 runnable 

"Concurrent Mark-Sweep GC Thread" prio=9 tid=10284e800 nid=0x152b18000 runnable 
"VM Periodic Task Thread" prio=10 tid=10184a800 nid=0x154110000 waiting on condition 

"Exception Catcher Thread" prio=10 tid=102801000 nid=0x102301000 runnable 
JNI global references: 3757
Comment 1 jmborer 2010-12-08 19:46:20 UTC
I forgot to say that it is NB 7.0beta.

I don't know if it is related to http://netbeans.org/bugzilla/show_bug.cgi?id=187697 

I have some doubts...
Comment 2 Jesse Glick 2011-01-04 19:18:06 UTC
Don't see the cause of the deadlock yet. Various threads are waiting to enter Children.MUTEX but I can't see any code which is already in it and blocked...? There are also some threads waiting on EntrySupport.Something.LOCK which I do not know about.

BTW reporter - in the future please click "Add an attachment" for thread dumps. They get reformatted and are hard to read when pasted into the description/comment area.
Comment 3 Jaroslav Tulach 2011-01-04 20:13:12 UTC
The code in "Active Reference Queue Daemon" is the problem. the callRemoveNotify is called under Children.PR.enterWriteAccess(). The code then requires some other lock from projects. Please avoid that.
Comment 4 Jesse Glick 2011-10-14 17:32:49 UTC
*** Bug 202072 has been marked as a duplicate of this bug. ***
Comment 5 Jesse Glick 2012-04-13 21:12:42 UTC
Overzealous synchronization, it seems.
Comment 6 Jesse Glick 2012-04-13 22:17:37 UTC
Calling DependenciesChildren.regenerateKeys is definitely wrong here; NodeList.keys() should not be acquiring Children.MUTEX. That is why it only happens on Maven projects. This I will fix.

NodeFactorySupport also looks much too complicated and has multiple locks it is synchronizing on, under some of which it is calling into foreign code. Could probably be rewritten to ChildFactory and made much simpler. Not going to try that now.
Comment 7 Jesse Glick 2012-04-13 22:20:56 UTC
core-main #656ac8d0890b
Comment 8 Quality Engineering 2012-04-14 09:44:06 UTC
Integrated into 'main-golden', will be available in build *201204140400* on http://bits.netbeans.org/dev/nightly/ (upload may still be in progress)
Changeset: http://hg.netbeans.org/main-golden/rev/656ac8d0890b
User: Jesse Glick <jglick@netbeans.org>
Log: #193065: [70cat] Deadlock in project.ui.support.NodeFactorySupport$DelegateChildren
Removed weird pattern of having a Children subclass as a key type.
Factoring the actual list of dependencies into a proper model class, and making the Children be a pure view.
Should prevent call to Children.Keys.setKeys from inside a NFS.DC lock, which was a contributor to the deadlock.


By use of this website, you agree to the NetBeans Policies and Terms of Use. © 2012, Oracle Corporation and/or its affiliates. Sponsored by Oracle logo