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 212080 - o.n.m.csl.navigation.ElementNode.updateRecursively another deadlock
Summary: o.n.m.csl.navigation.ElementNode.updateRecursively another deadlock
Status: RESOLVED FIXED
Alias: None
Product: editor
Classification: Unclassified
Component: CSL (API & infrastructure) (show other bugs)
Version: 7.2
Hardware: PC Mac OS X
: P2 normal (vote)
Assignee: Svata Dedic
URL:
Keywords:
: 211992 212022 212174 (view as bug list)
Depends on:
Blocks:
 
Reported: 2012-05-04 11:15 UTC by Marek Fukala
Modified: 2012-05-09 11:48 UTC (History)
3 users (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 Marek Fukala 2012-05-04 11:15:39 UTC
Happened during html file editing. Similar to the former one I fixed by the "isLeaf" pre-computation. Now it really seems to be necessary to move the ElemewntNode.updateRecursively() out of the parsing lock.

Found one Java-level deadlock:
=============================
"Editor Parsing Loop (20120427-a81a653a2eda)":
  waiting to lock monitor 000000000285823c (object 0000000005a5e2c8, a org.openide.nodes.ChildrenArray),
  which is held by "AWT-EventQueue-1"
"AWT-EventQueue-1":
  waiting for ownable synchronizer 000000000c467f38, (a java.util.concurrent.locks.ReentrantLock$FairSync),
  which is held by "Editor Parsing Loop (20120427-a81a653a2eda)"

Java stack information for the threads listed above:
===================================================
"Editor Parsing Loop (20120427-a81a653a2eda)":
	at org.openide.nodes.ChildrenArray.nodesFor(ChildrenArray.java:132)
	- waiting to lock <0000000005a5e2c8> (a org.openide.nodes.ChildrenArray)
	at org.openide.nodes.EntrySupport$Default$Info.nodes(EntrySupport.java:943)
	at org.openide.nodes.EntrySupport$Default.justComputeNodes(EntrySupport.java:253)
	at org.openide.nodes.ChildrenArray.nodes(ChildrenArray.java:88)
	at org.openide.nodes.EntrySupport$Default.getNodes(EntrySupport.java:183)
	at org.openide.nodes.EntrySupport$Default.snapshot(EntrySupport.java:149)
	at org.openide.nodes.Children.snapshot(Children.java:532)
	at org.openide.explorer.view.TreeView.expandNode(TreeView.java:608)
	at org.netbeans.modules.csl.navigation.ClassMemberPanelUI.expandNode(ClassMemberPanelUI.java:274)
	at org.netbeans.modules.csl.navigation.ClassMemberPanelUI.expandNodeByDefault(ClassMemberPanelUI.java:301)
	at org.netbeans.modules.csl.navigation.ClassMemberPanelUI.expandNodeByDefaultRecursively(ClassMemberPanelUI.java:286)
	at org.netbeans.modules.csl.navigation.ClassMemberPanelUI.expandNodeByDefaultRecursively(ClassMemberPanelUI.java:279)
	at org.netbeans.modules.csl.navigation.ElementNode.updateRecursively(ElementNode.java:306)
	at org.netbeans.modules.csl.navigation.ClassMemberPanelUI.refresh(ClassMemberPanelUI.java:224)
	at org.netbeans.modules.csl.navigation.ElementScanningTask.run(ElementScanningTask.java:198)
	at org.netbeans.modules.csl.navigation.ClassMemberNavigatorSourceFactory$ProxyElementScanningTask.run(ClassMemberNavigatorSourceFactory.java:138)
	at org.netbeans.modules.csl.navigation.ClassMemberNavigatorSourceFactory$ProxyElementScanningTask.run(ClassMemberNavigatorSourceFactory.java:110)
	at org.netbeans.modules.parsing.impl.TaskProcessor.callParserResultTask(TaskProcessor.java:558)
	at org.netbeans.modules.parsing.impl.TaskProcessor$CompilationJob.run(TaskProcessor.java:734)
	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)
"AWT-EventQueue-1":
	at sun.misc.Unsafe.park(Native Method)
	- parking to wait for  <000000000c467f38> (a java.util.concurrent.locks.ReentrantLock$FairSync)
	at java.util.concurrent.locks.LockSupport.park(LockSupport.java:156)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:811)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireQueued(AbstractQueuedSynchronizer.java:842)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(AbstractQueuedSynchronizer.java:1178)
	at java.util.concurrent.locks.ReentrantLock$FairSync.lock(ReentrantLock.java:201)
	at java.util.concurrent.locks.ReentrantLock.lock(ReentrantLock.java:262)
	at org.netbeans.modules.parsing.impl.TaskProcessor.runUserTask(TaskProcessor.java:189)
	at org.netbeans.modules.parsing.api.ParserManager.parse(ParserManager.java:102)
	at org.netbeans.modules.html.editor.gsf.HtmlStructureItem.getNestedItems(HtmlStructureItem.java:152)
	- locked <0000000005bbb268> (a org.netbeans.modules.html.editor.gsf.HtmlStructureItem)
	at org.netbeans.modules.csl.navigation.ElementNode.<init>(ElementNode.java:105)
	at org.netbeans.modules.csl.navigation.ElementNode$ElementChildren.createNodes(ElementNode.java:347)
	at org.netbeans.modules.csl.navigation.ElementNode$ElementChildren.createNodes(ElementNode.java:336)
	at org.openide.nodes.Children$Keys$KE.nodes(Children.java:1661)
	at org.openide.nodes.ChildrenArray.nodesFor(ChildrenArray.java:149)
	- locked <0000000005a5e2c8> (a org.openide.nodes.ChildrenArray)
	at org.openide.nodes.EntrySupport$Default$Info.nodes(EntrySupport.java:943)
	at org.openide.nodes.EntrySupport$Default.justComputeNodes(EntrySupport.java:253)
	at org.openide.nodes.ChildrenArray.nodes(ChildrenArray.java:88)
	at org.openide.nodes.EntrySupport$Default.getNodes(EntrySupport.java:183)
	at org.openide.nodes.EntrySupport$Default.getNodes(EntrySupport.java:228)
	at org.openide.nodes.Children.getNodes(Children.java:469)
	at org.netbeans.modules.csl.navigation.ElementNode.getNodeForOffset(ElementNode.java:244)
	at org.netbeans.modules.csl.navigation.ElementNode.getNodeForOffset(ElementNode.java:251)
	at org.netbeans.modules.csl.navigation.ElementNode.getMimeRootNodeForOffset(ElementNode.java:232)
	at org.netbeans.modules.csl.navigation.ClassMemberPanelUI$3.run(ClassMemberPanelUI.java:204)
	at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:682)
	at java.awt.EventQueue.access$000(EventQueue.java:85)
	at java.awt.EventQueue$1.run(EventQueue.java:643)
	at java.awt.EventQueue$1.run(EventQueue.java:641)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:652)
	at org.netbeans.core.TimableEventQueue.dispatchEvent(TimableEventQueue.java:158)
	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)

Found 1 deadlock.

Heap
 par new generation   total 14784K, used 12709K [0000000005010000, 0000000006010000, 0000000009010000)
  eden space 13184K,  93% used [0000000005010000, 0000000005c0a030, 0000000005cf0000)
  from space 1600K,  27% used [0000000005cf0000, 0000000005d5f3e8, 0000000005e80000)
  to   space 1600K,   0% used [0000000005e80000, 0000000005e80000, 0000000006010000)
 concurrent mark-sweep generation total 137524K, used 100687K [0000000009010000, 000000001165d000, 0000000035010000)
 concurrent-mark-sweep perm gen total 118836K, used 74982K [0000000035010000, 000000003c41d000, 000000004d010000)
Comment 1 Milutin Kristofic 2012-05-04 11:25:53 UTC
Bug #212022 looks similar.
Comment 2 Svata Dedic 2012-05-07 11:54:23 UTC
Will be fixed in jet-main #0cd60fc2abc0
Comment 3 Marek Fukala 2012-05-09 06:59:59 UTC
*** Bug 212174 has been marked as a duplicate of this bug. ***
Comment 4 Milutin Kristofic 2012-05-09 09:18:58 UTC
*** Bug 212022 has been marked as a duplicate of this bug. ***
Comment 5 Quality Engineering 2012-05-09 09:58:27 UTC
Integrated into 'main-golden', will be available in build *201205090400* on http://bits.netbeans.org/dev/nightly/ (upload may still be in progress)
Changeset: http://hg.netbeans.org/main-golden/rev/0cd60fc2abc0
User: Svata Dedic <sdedic@netbeans.org>
Log: #212080: expansion and update moved to a RP; fixed unwanted scrolling after expansion introduced by 2c21a99cfccb
Comment 6 Marek Fukala 2012-05-09 11:47:49 UTC
*** Bug 211992 has been marked as a duplicate of this bug. ***