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 219813 - Deadlock after adding a Component to JPanel
Summary: Deadlock after adding a Component to JPanel
Status: RESOLVED FIXED
Alias: None
Product: web
Classification: Unclassified
Component: CSS Visual Tools (show other bugs)
Version: 7.3
Hardware: PC Windows 7
: P3 normal (vote)
Assignee: Marek Fukala
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2012-10-10 11:29 UTC by stefan79
Modified: 2012-11-22 14:53 UTC (History)
1 user (show)

See Also:
Issue Type: DEFECT
Exception Reporter:


Attachments
ThreadDumps + Message-Log + Application-Snapshot (139.61 KB, application/x-sdlc)
2012-10-10 11:30 UTC, stefan79
Details

Note You need to log in before you can comment on or make changes to this bug.
Description stefan79 2012-10-10 11:29:31 UTC
[ BUILD # : 201210090002 ]
[ JDK VERSION : 1.7.7 ]

I´ve added a own written component to a Panel.
After that the IDE hangs and doesn´t responses (about 2 hours).

I´ll attach the Thread-Dumps while this period.
Comment 1 stefan79 2012-10-10 11:30:27 UTC
Created attachment 125677 [details]
ThreadDumps + Message-Log + Application-Snapshot
Comment 2 Tomas Pavek 2012-10-17 16:11:15 UTC
"RepositoryUpdater.worker":
	at java.util.Hashtable.get(Hashtable.java:458)
	- waiting to lock <0x000000078137db00> (a javax.swing.MultiUIDefaults)
	at javax.swing.UIDefaults.getFromHashtable(UIDefaults.java:174)
	at javax.swing.UIDefaults.get(UIDefaults.java:162)
	at javax.swing.MultiUIDefaults.get(MultiUIDefaults.java:58)
	at javax.swing.UIDefaults.getUI(UIDefaults.java:752)
	at javax.swing.UIManager.getUI(UIManager.java:1013)
	at javax.swing.JLabel.updateUI(JLabel.java:274)
	at javax.swing.JLabel.<init>(JLabel.java:163)
	at javax.swing.JLabel.<init>(JLabel.java:222)
	at org.netbeans.modules.css.visual.RuleEditorPanel.<clinit>(RuleEditorPanel.java:162)
	at org.netbeans.modules.css.visual.CssCaretAwareSourceTask.<clinit>(CssCaretAwareSourceTask.java:75)
	at org.netbeans.modules.css.visual.CssCaretAwareSourceTask$Factory.create(CssCaretAwareSourceTask.java:234)
	at org.netbeans.modules.parsing.impl.SourceCache.createTasks(SourceCache.java:474)
	at org.netbeans.modules.parsing.impl.SourceCache.getAllEmbeddings(SourceCache.java:289)
	at org.netbeans.modules.parsing.api.ResultIterator.getEmbeddings(ResultIterator.java:163)
	at org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$Work$3.run(RepositoryUpdater.java:2852)
	at org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$Work$3.run(RepositoryUpdater.java:2856)
	at org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$Work$3.run(RepositoryUpdater.java:2856)
	at org.netbeans.modules.parsing.impl.TaskProcessor.callUserTask(TaskProcessor.java:584)
	at org.netbeans.modules.parsing.api.ParserManager$UserTaskAction.run(ParserManager.java:150)
	at org.netbeans.modules.parsing.api.ParserManager$UserTaskAction.run(ParserManager.java:134)
	at org.netbeans.modules.parsing.impl.TaskProcessor$2.call(TaskProcessor.java:201)
	at org.netbeans.modules.parsing.impl.TaskProcessor$2.call(TaskProcessor.java:198)
	at org.netbeans.modules.masterfs.filebasedfs.utils.FileChangedManager.priorityIO(FileChangedManager.java:176)
	at org.netbeans.modules.masterfs.providers.ProvidedExtensions.priorityIO(ProvidedExtensions.java:360)
	at org.netbeans.modules.parsing.impl.Utilities.runPriorityIO(Utilities.java:74)
	at org.netbeans.modules.parsing.impl.TaskProcessor.runUserTask(TaskProcessor.java:198)
	at org.netbeans.modules.parsing.api.ParserManager.parse(ParserManager.java:102)
	at org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$Work.indexEmbedding(RepositoryUpdater.java:2795)
	at org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$Work.doIndex(RepositoryUpdater.java:2585)
	at org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$Work.access$1500(RepositoryUpdater.java:2090)
	at org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$Work$2.run(RepositoryUpdater.java:2397)
	at org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$Work$2.run(RepositoryUpdater.java:2395)
	at org.netbeans.modules.parsing.impl.indexing.errors.TaskCache.refreshTransaction(TaskCache.java:544)
	at org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$Work.index(RepositoryUpdater.java:2395)
	at org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$Work.scanFiles(RepositoryUpdater.java:2901)
	at org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$FileListWork.getDone(RepositoryUpdater.java:3254)
	at org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$Work.doTheWork(RepositoryUpdater.java:2995)
	at org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$Task._run(RepositoryUpdater.java:5231)
	at org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$Task.access$4800(RepositoryUpdater.java:4923)
	at org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$Task$2$1.run(RepositoryUpdater.java:5168)
	at org.netbeans.modules.parsing.impl.RunWhenScanFinishedSupport.performScan(RunWhenScanFinishedSupport.java:96)
	at org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$Task$2.call(RepositoryUpdater.java:5164)
	at org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$Task$2.call(RepositoryUpdater.java:5160)
	at org.netbeans.modules.masterfs.filebasedfs.utils.FileChangedManager.priorityIO(FileChangedManager.java:176)
	at org.netbeans.modules.masterfs.providers.ProvidedExtensions.priorityIO(ProvidedExtensions.java:360)
	at org.netbeans.modules.parsing.impl.Utilities.runPriorityIO(Utilities.java:74)
	at org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$Task.run(RepositoryUpdater.java:5160)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
	at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
	at java.util.concurrent.FutureTask.run(FutureTask.java:166)
	at org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:1454)
	at org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:2036)
"AWT-EventQueue-1":
	at sun.misc.Unsafe.park(Native Method)
	- parking to wait for  <0x0000000782bd5c38> (a java.util.concurrent.locks.ReentrantLock$FairSync)
	at java.util.concurrent.locks.LockSupport.park(LockSupport.java:186)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:834)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireQueued(AbstractQueuedSynchronizer.java:867)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(AbstractQueuedSynchronizer.java:1197)
	at java.util.concurrent.locks.ReentrantLock$FairSync.lock(ReentrantLock.java:229)
	at java.util.concurrent.locks.ReentrantLock.lock(ReentrantLock.java:290)
	at org.netbeans.modules.parsing.impl.TaskProcessor.runUserTask(TaskProcessor.java:190)
	at org.netbeans.modules.parsing.api.ParserManager.parse(ParserManager.java:102)
	at org.netbeans.api.java.source.JavaSource.runUserActionTaskImpl(JavaSource.java:438)
	at org.netbeans.api.java.source.JavaSource.runUserActionTask(JavaSource.java:409)
	at org.netbeans.modules.java.source.queriesimpl.QueriesControllerImpl.runQuery(QueriesControllerImpl.java:81)
	at org.netbeans.modules.java.source.queries.api.Queries.query(Queries.java:231)
	at org.netbeans.modules.form.FormJavaSource.query(FormJavaSource.java:88)
	at org.netbeans.modules.form.FormJavaSource.refresh(FormJavaSource.java:183)
	at org.netbeans.modules.form.FormJavaSource.containsField(FormJavaSource.java:176)
	at org.netbeans.modules.form.codestructure.CodeStructure.getFreeVariableName(CodeStructure.java:578)
	at org.netbeans.modules.form.codestructure.CodeStructure.getFreeVariableName(CodeStructure.java:567)
	at org.netbeans.modules.form.codestructure.CodeStructure.getExternalVariableName(CodeStructure.java:589)
	at org.netbeans.modules.form.MetaComponentCreator.createVisualComponent(MetaComponentCreator.java:936)
	at org.netbeans.modules.form.MetaComponentCreator.access$300(MetaComponentCreator.java:79)
	at org.netbeans.modules.form.MetaComponentCreator$2.run(MetaComponentCreator.java:260)
	at org.netbeans.modules.form.FormLAF$2.run(FormLAF.java:293)
	- locked <0x000000078137db00> (a javax.swing.MultiUIDefaults)
	- locked <0x0000000780036080> (a java.lang.Class for java.beans.Introspector)
	at org.openide.util.Mutex.doEventAccess(Mutex.java:1363)
	at org.openide.util.Mutex.readAccess(Mutex.java:322)
	at org.netbeans.modules.form.FormLAF.executeWithLookAndFeel(FormLAF.java:276)
	at org.netbeans.modules.form.MetaComponentCreator.precreateVisualComponent(MetaComponentCreator.java:256)
	at org.netbeans.modules.form.MetaComponentCreator.precreateVisualComponent(MetaComponentCreator.java:279)
	at org.netbeans.modules.form.HandleLayer$NewComponentDrag.init(HandleLayer.java:3273)
	at org.netbeans.modules.form.HandleLayer$NewComponentDrag.<init>(HandleLayer.java:3268)
	at org.netbeans.modules.form.HandleLayer$NewComponentDropListener.dragEnter(HandleLayer.java:3568)
	at java.awt.dnd.DropTarget.dragEnter(DropTarget.java:357)
	- locked <0x000000078e5144e8> (a java.awt.dnd.DropTarget)
	at sun.awt.dnd.SunDropTargetContextPeer.processEnterMessage(SunDropTargetContextPeer.java:330)
	at sun.awt.dnd.SunDropTargetContextPeer$EventDispatcher.dispatchEnterEvent(SunDropTargetContextPeer.java:798)
	- locked <0x00000007e96b38c8> (a sun.awt.windows.WDropTargetContextPeer)
	at sun.awt.dnd.SunDropTargetContextPeer$EventDispatcher.dispatchEvent(SunDropTargetContextPeer.java:766)
	at sun.awt.dnd.SunDropTargetEvent.dispatch(SunDropTargetEvent.java:48)
	at java.awt.Component.dispatchEventImpl(Component.java:4716)
	at java.awt.Container.dispatchEventImpl(Container.java:2287)
	at java.awt.Component.dispatchEvent(Component.java:4687)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4832)
	at java.awt.LightweightDispatcher.trackMouseEnterExit(Container.java:4620)
	at java.awt.LightweightDispatcher.processDropTargetEvent(Container.java:4558)
	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4417)
	at java.awt.Container.dispatchEventImpl(Container.java:2273)
	at java.awt.Window.dispatchEventImpl(Window.java:2719)
	at java.awt.Component.dispatchEvent(Component.java:4687)
	at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:723)
	at java.awt.EventQueue.access$200(EventQueue.java:103)
	at java.awt.EventQueue$3.run(EventQueue.java:682)
	at java.awt.EventQueue$3.run(EventQueue.java:680)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
	at java.awt.EventQueue$4.run(EventQueue.java:696)
	at java.awt.EventQueue$4.run(EventQueue.java:694)
	at java.security.AccessController.doPrivileged(Native Method)
	at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:693)
	at org.netbeans.core.TimableEventQueue.dispatchEvent(TimableEventQueue.java:158)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:244)
	at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:163)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:151)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:147)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:139)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:97)
Comment 3 Tomas Pavek 2012-10-17 16:16:10 UTC
A deadlock between AWT-EventQueue and RepositoryUpdater threads.

In the AWT thread it's a fault of the GUI builder that it calls JavaSource under AWT lock. I've made a fix for this particular case (jet-main a3fd764a4366).

In the RepositoryUpdater it's a problem of org.netbeans.modules.css.visual.RuleEditorPanel that creates JLabel in static initializer. This is wrong as it happens when the class is loaded which can be hardly controlled, and as shown here it may lead to creating UI components out of the AWT thread. Reassigning to CSS.
Comment 4 Quality Engineering 2012-10-18 02:03:23 UTC
Integrated into 'main-golden', will be available in build *201210180002* on http://bits.netbeans.org/dev/nightly/ (upload may still be in progress)
Changeset: http://hg.netbeans.org/main-golden/rev/a3fd764a4366
User: Tomas Pavek <tpavek@netbeans.org>
Log: #219813: minimizing chance that JavaSource is invoked under AWT lock from LAF block
Comment 5 Marek Fukala 2012-11-22 14:53:14 UTC
already fixed in web-main#4f9d672214c1 - Thu Nov 08 13:17:34 CET 2012