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 184633

Summary: Deadlock between Children.MUTEX and Children.class
Product: platform Reporter: Jesse Glick <jglick>
Component: NodesAssignee: Jaroslav Tulach <jtulach>
Status: RESOLVED FIXED    
Severity: normal Keywords: RANDOM, TEST, THREAD
Priority: P3    
Version: 6.x   
Hardware: PC   
OS: Linux   
URL: http://deadlock.netbeans.org/hudson/job/NB-Core-Build/4480/testReport/org.openide.nodes/ChildrenFilterAsKeysTest/testSnapshotFN/
Issue Type: DEFECT Exception Reporter:
Attachments: Hudson test failure log

Description Jesse Glick 2010-04-21 14:51:06 UTC
Created attachment 97809 [details]
Hudson test failure log

Looks random; no changes in platform in this build. Seems to be a lock-ordering conflict (see marked lines):

> junit.framework.AssertionFailedError: The test testSnapshotFN did not finish in 35000ms
>     Thread Active Reference Queue Daemon
>>	at org.openide.nodes.Children.entrySupport(Children.java:147)
> 	at org.openide.nodes.Children$Keys$2.run(Children.java:1524)
> 	at org.openide.util.Mutex.postRequest(Mutex.java:1264)
> 	at org.openide.util.Mutex.postRequest(Mutex.java:1210)
>>	at org.openide.util.Mutex.postWriteRequest(Mutex.java:582)
> 	at org.openide.nodes.Children$Keys.applyKeys(Children.java:1533)
> 	at org.openide.nodes.Children$Keys.setKeys(Children.java:1477)
> 	at org.openide.nodes.ChildrenKeysTest$9K.removeNotify(ChildrenKeysTest.java:918)
> 	at org.openide.nodes.Children.callRemoveNotify(Children.java:555)
> 	at org.openide.nodes.EntrySupport$Default.finalizedChildrenArray(EntrySupport.java:903)
> 	at org.openide.nodes.EntrySupport$Default$ChArrRef.run(EntrySupport.java:987)
> 	at org.openide.util.lookup.implspi.ActiveQueue$Impl.run(ActiveQueue.java:67)
> 	at java.lang.Thread.run(Thread.java:619)
>     Thread Test Watch Dog: testSnapshotFN
> 	at java.lang.Object.wait(Object.java:-2)
> 	at java.lang.Object.wait(Object.java:485)
> 	at org.openide.util.Mutex$QueueCell.sleep(Mutex.java:1609)
> 	at org.openide.util.Mutex.enterImpl(Mutex.java:724)
> 	at org.openide.util.Mutex.enter(Mutex.java:631)
> 	at org.openide.util.Mutex.readEnter(Mutex.java:614)
>>	at org.openide.util.Mutex$Privileged.enterReadAccess(Mutex.java:1658)
> 	at org.openide.nodes.FilterNode.updateChildren(FilterNode.java:1048)
> 	at org.openide.nodes.Node.getChildren(Node.java:456)
> 	at org.openide.nodes.FilterNode$Children.entrySupport(FilterNode.java:1322)
> 	at org.openide.nodes.Children$Array.postInitializeEntrySupport(Children.java:671)
>>	at org.openide.nodes.FilterNode$Children.entrySupport(FilterNode.java:1348)
> 	at org.openide.nodes.Children.getNodesCount(Children.java:484)
> 	at org.openide.nodes.ChildrenKeysTest.testSnapshotFN(ChildrenKeysTest.java:1702)
> 	at org.netbeans.junit.NbTestCase.access$200(NbTestCase.java:89)
> 	at org.netbeans.junit.NbTestCase$2.doSomething(NbTestCase.java:345)
> 	at org.netbeans.junit.NbTestCase$1Guard.run(NbTestCase.java:274)
> 	at java.lang.Thread.run(Thread.java:619)
Comment 1 Jaroslav Tulach 2010-04-21 15:00:28 UTC
Interesting, thanks.
Comment 2 Jaroslav Tulach 2010-04-23 16:12:32 UTC
core-main#b55928eab547
Comment 3 Quality Engineering 2010-04-24 05:30:22 UTC
Integrated into 'main-golden', will be available in build *201004240200* on http://bits.netbeans.org/dev/nightly/ (upload may still be in progress)
Changeset: http://hg.netbeans.org/main/rev/b55928eab547
User: Jaroslav Tulach <jtulach@netbeans.org>
Log: #184633: Prevent re-entrant calls to entrySupport(), guard the comment with assert