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 161290 - Deadlock when formatting based on AST result
Summary: Deadlock when formatting based on AST result
Status: RESOLVED DUPLICATE of bug 161311
Alias: None
Product: editor
Classification: Unclassified
Component: CSL (API & infrastructure) (show other bugs)
Version: 6.x
Hardware: All All
: P2 blocker (vote)
Assignee: issues@editor
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2009-03-26 17:34 UTC by Tomasz Slota
Modified: 2009-03-30 00:54 UTC (History)
2 users (show)

See Also:
Issue Type: DEFECT
Exception Reporter:


Attachments
IDE log including thread dump (27.73 KB, text/plain)
2009-03-26 17:37 UTC, Tomasz Slota
Details

Note You need to log in before you can comment on or make changes to this bug.
Description Tomasz Slota 2009-03-26 17:34:51 UTC
I have experimental PHPFormatter that returns true in the needsParserResult() method. When I call the format action during task scanning the IDE enters a 
deadlock. Also everytime I call formatter i see this warning:

WARNING [org.netbeans.modules.parsing.impl.TaskProcessor]: ParserManager.parse called in AWT event thread by: 
org.netbeans.modules.csl.core.GsfReformatTask.reformat(GsfReformatTask.java:91)
Comment 1 Tomasz Slota 2009-03-26 17:37:49 UTC
Created attachment 78926 [details]
IDE log including thread dump
Comment 2 Dusan Balek 2009-03-27 10:13:07 UTC
Attach a thread dump please.
Comment 3 Tomasz Slota 2009-03-27 16:10:23 UTC
Sorry for the delay, I could not reproduce it for a long while:


Full thread dump Java HotSpot(TM) Client VM (1.5.0_16-133 mixed mode):

"Default RequestProcessor" daemon prio=1 tid=0x4ff70300 nid=0x8d3000 in Object.wait() [0xb4845000..0xb4845d90]
	at java.lang.Object.wait(Native Method)
	- waiting on <0x097c7250> (a java.lang.Object)
	at java.lang.Object.wait(Object.java:474)
	at org.netbeans.modules.tasklist.impl.FileScanningWorker.run(FileScanningWorker.java:205)
	- locked <0x097c7250> (a java.lang.Object)
	at org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:573)
	at org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:1005)

"org.netbeans.modules.gsfret.source.usages.RepositoryUpdater" daemon prio=1 tid=0x4ff6e960 nid=0x8d1c00 in Object.wait() 
[0xb4644000..0xb4644d90]
	at java.lang.Object.wait(Native Method)
	- waiting on <0x096e02d0> (a java.util.TaskQueue)
	at java.lang.Object.wait(Object.java:474)
	at java.util.TimerThread.mainLoop(Timer.java:483)
	- locked <0x096e02d0> (a java.util.TaskQueue)
	at java.util.TimerThread.run(Timer.java:462)

"Default RequestProcessor" daemon prio=1 tid=0x4ff6dec0 nid=0x87ec00 in Object.wait() [0xb4443000..0xb4443d90]
	at java.lang.Object.wait(Native Method)
	- waiting on <0x091c0a68> (a org.netbeans.modules.csl.core.GsfDocument)
	at java.lang.Object.wait(Object.java:474)
	at javax.swing.text.AbstractDocument.readLock(AbstractDocument.java:1392)
	- locked <0x091c0a68> (a org.netbeans.modules.csl.core.GsfDocument)
	at org.netbeans.editor.CustomFoldManager.run(CustomFoldManager.java:132)
	at org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:573)
	at org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:1005)

"Inactive RequestProcessor thread [Was:TimedWeakReference/org.netbeans.modules.projectapi.TimedWeakReference]" daemon prio=1 tid=0x4ff6be10 
nid=0x9a9c00 in Object.wait() [0xb4242000..0xb4242d90]
	at java.lang.Object.wait(Native Method)
	- waiting on <0x096e02e0> (a java.lang.Object)
	at org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:958)
	- locked <0x096e02e0> (a java.lang.Object)

"GSF Source Worker Thread" prio=6 tid=0x4ff57150 nid=0x8ba400 in Object.wait() [0xb4041000..0xb4041d90]
	at java.lang.Object.wait(Native Method)
	- waiting on <0x091c0a68> (a org.netbeans.modules.csl.core.GsfDocument)
	at java.lang.Object.wait(Object.java:474)
	at javax.swing.text.AbstractDocument.readLock(AbstractDocument.java:1392)
	- locked <0x091c0a68> (a org.netbeans.modules.csl.core.GsfDocument)
	at org.netbeans.editor.BaseDocument.render(BaseDocument.java:1363)
	at org.netbeans.modules.gsfret.source.parsing.SourceFileObject.getCharContentImpl(SourceFileObject.java:335)
	at org.netbeans.modules.gsfret.source.parsing.SourceFileObject.<init>(SourceFileObject.java:114)
	at org.netbeans.napi.gsfret.source.CompilationInfo.<init>(CompilationInfo.java:101)
	at org.netbeans.napi.gsfret.source.Source.createCurrentInfo(Source.java:1669)
	at org.netbeans.napi.gsfret.source.Source.access$2600(Source.java:146)
	at org.netbeans.napi.gsfret.source.Source$CompilationJob.run(Source.java:1393)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:417)
	at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:269)
	at java.util.concurrent.FutureTask.run(FutureTask.java:123)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
	at java.lang.Thread.run(Thread.java:613)

"Default RequestProcessor" daemon prio=1 tid=0x010e9a70 nid=0x963e00 in Object.wait() [0xb2811000..0xb2811d90]
	at java.lang.Object.wait(Native Method)
	- waiting on <0x098ae560> (a org.netbeans.modules.openide.loaders.AWTTask)
	at java.lang.Object.wait(Object.java:474)
	at org.openide.util.Task.waitFinished(Task.java:130)
	- locked <0x098ae560> (a org.netbeans.modules.openide.loaders.AWTTask)
	at org.netbeans.modules.openide.loaders.AWTTask.waitFinished(AWTTask.java:94)
	at org.openide.loaders.FolderInstance$1R.waitFinished(FolderInstance.java:731)
	at org.openide.loaders.FolderInstance.waitFinished(FolderInstance.java:347)
	at org.openide.awt.MenuBar$LazyMenu$MenuFolder.waitFinishedSuper(MenuBar.java:623)
	at org.openide.awt.MenuBar$LazyMenu.doInitialize(MenuBar.java:581)
	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:585)
	at org.netbeans.core.ui.warmup.MenuWarmUpTask.walkMenu(MenuWarmUpTask.java:107)
	at org.netbeans.core.ui.warmup.MenuWarmUpTask.run(MenuWarmUpTask.java:93)
	at org.netbeans.core.WarmUpSupport.run(WarmUpSupport.java:99)
	at org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:573)
	at org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:1005)

"Java Source Worker Thread" daemon prio=1 tid=0x010d6150 nid=0x8bf400 in Object.wait() [0xb2e1d000..0xb2e1dd90]
	at java.lang.Object.wait(Native Method)
	- waiting on <0x091c0a68> (a org.netbeans.modules.csl.core.GsfDocument)
	at java.lang.Object.wait(Object.java:474)
	at javax.swing.text.AbstractDocument.readLock(AbstractDocument.java:1392)
	- locked <0x091c0a68> (a org.netbeans.modules.csl.core.GsfDocument)
	at org.netbeans.editor.BaseDocument.render(BaseDocument.java:1363)
	at org.netbeans.modules.csl.editor.semantic.OccurrencesMarkProvider.createMarks(OccurrencesMarkProvider.java:145)
	at org.netbeans.modules.csl.editor.semantic.MarkOccurrencesHighlighter.run(MarkOccurrencesHighlighter.java:158)
	at org.netbeans.modules.csl.editor.semantic.MarkOccurrencesHighlighter.run(MarkOccurrencesHighlighter.java:81)
	at org.netbeans.modules.parsing.impl.TaskProcessor$CompilationJob.run(TaskProcessor.java:681)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:417)
	at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:269)
	at java.util.concurrent.FutureTask.run(FutureTask.java:123)
	at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
	at java.lang.Thread.run(Thread.java:613)

"DestroyJavaVM" prio=5 tid=0x01001c10 nid=0xb0801000 waiting on condition [0x00000000..0xb0800060]

"AWT-EventQueue-1" prio=6 tid=0x010a2e30 nid=0x94d600 waiting on condition [0xb383d000..0xb383dd90]
	at sun.misc.Unsafe.park(Native Method)
	at java.util.concurrent.locks.LockSupport.park(LockSupport.java:118)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:716)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireQueued(AbstractQueuedSynchronizer.java:746)
	at java.util.concurrent.locks.AbstractQueuedSynchronizer.acquire(AbstractQueuedSynchronizer.java:1076)
	at java.util.concurrent.locks.ReentrantLock$FairSync.lock(ReentrantLock.java:197)
	at java.util.concurrent.locks.ReentrantLock.lock(ReentrantLock.java:256)
	at org.netbeans.modules.parsing.impl.TaskProcessor.runUserTask(TaskProcessor.java:180)
	at org.netbeans.modules.parsing.api.ParserManager.parse(ParserManager.java:101)
	at org.netbeans.modules.php.editor.indent.PHPFormatter.astReformat(PHPFormatter.java:758)
	at org.netbeans.modules.php.editor.indent.PHPFormatter.reformat(PHPFormatter.java:139)
	at org.netbeans.modules.csl.core.GsfReformatTask.reformat(GsfReformatTask.java:116)
	at org.netbeans.modules.editor.indent.TaskHandler$MimeItem.runTask(TaskHandler.java:547)
	at org.netbeans.modules.editor.indent.TaskHandler.runTasks(TaskHandler.java:314)
	at org.netbeans.modules.editor.indent.IndentImpl.reformat(IndentImpl.java:293)
	at org.netbeans.modules.editor.indent.FormatterImpl.reformat(FormatterImpl.java:187)
	at org.netbeans.editor.ActionFactory$FormatAction$1.run(ActionFactory.java:1593)
	at org.netbeans.editor.GuardedDocument.runAtomicAsUser(GuardedDocument.java:354)
	at org.netbeans.editor.ActionFactory$FormatAction.actionPerformed(ActionFactory.java:1564)
	at org.netbeans.editor.BaseAction.actionPerformed(BaseAction.java:297)
	at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1882)
	at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2202)
	at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:420)
	at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:258)
	at javax.swing.AbstractButton.doClick(AbstractButton.java:334)
	at javax.swing.plaf.basic.BasicMenuItemUI.doClick(BasicMenuItemUI.java:1051)
	at apple.laf.CUIAquaMenuItem.doClick(CUIAquaMenuItem.java:119)
	at javax.swing.plaf.basic.BasicMenuItemUI$Handler.mouseReleased(BasicMenuItemUI.java:1092)
	at java.awt.Component.processMouseEvent(Component.java:5602)
	at javax.swing.JComponent.processMouseEvent(JComponent.java:3135)
	at java.awt.Component.processEvent(Component.java:5367)
	at java.awt.Container.processEvent(Container.java:2010)
	at java.awt.Component.dispatchEventImpl(Component.java:4068)
	at java.awt.Container.dispatchEventImpl(Container.java:2068)
	at java.awt.Component.dispatchEvent(Component.java:3903)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4256)
	at java.awt.LightweightDispatcher.processMouseEvent(Container.java:3936)
	at java.awt.LightweightDispatcher.dispatchEvent(Container.java:3866)
	at java.awt.Container.dispatchEventImpl(Container.java:2054)
	at java.awt.Window.dispatchEventImpl(Window.java:1801)
	at java.awt.Component.dispatchEvent(Component.java:3903)
	at java.awt.EventQueue.dispatchEvent(EventQueue.java:463)
	at org.netbeans.core.TimableEventQueue.dispatchEvent(TimableEventQueue.java:104)
	at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:269)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:190)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:184)
	at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:176)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:110)

"TimerQueue" daemon prio=5 tid=0x01097f10 nid=0x8f6600 runnable [0xb363c000..0xb363cd90]
	at java.lang.Object.wait(Native Method)
	- waiting on <0x08d4d068> (a javax.swing.TimerQueue)
	at javax.swing.TimerQueue.run(TimerQueue.java:236)
	- locked <0x08d4d068> (a javax.swing.TimerQueue)
	at java.lang.Thread.run(Thread.java:613)

"Inactive RequestProcessor thread [Was:CaretAwareSourceTaskFactory 
worker/org.netbeans.napi.gsfret.source.support.CaretAwareSourceTaskFactory$ComponentListener$1]" daemon prio=1 tid=0x0109e4c0 nid=0x865800 
in Object.wait() [0xb1e0c000..0xb1e0cd90]
	at java.lang.Object.wait(Native Method)
	- waiting on <0x08d32d78> (a java.lang.Object)
	at org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:958)
	- locked <0x08d32d78> (a java.lang.Object)

"Thread-4" daemon prio=5 tid=0x01093160 nid=0x988c00 in Object.wait() [0xb343b000..0xb343bd90]
	at java.lang.Object.wait(Native Method)
	- waiting on <0x08b662c0> (a java.util.LinkedList)
	at java.lang.Object.wait(Object.java:474)
	at java.util.prefs.AbstractPreferences$EventDispatchThread.run(AbstractPreferences.java:1456)
	- locked <0x08b662c0> (a java.util.LinkedList)

"*** JFluid Separate Command Execution Thread" daemon prio=5 tid=0x01091c60 nid=0x92b600 in Object.wait() [0xb323a000..0xb323ad90]
	at java.lang.Object.wait(Native Method)
	- waiting on <0x08cedd10> (a java.lang.Object)
	at java.lang.Object.wait(Object.java:474)
	at org.netbeans.lib.profiler.ProfilerClient$SeparateCmdExecutionThread.run(ProfilerClient.java:102)
	- locked <0x08cedd10> (a java.lang.Object)

"HintsController worker" daemon prio=1 tid=0x01063850 nid=0x918600 in Object.wait() [0xb301e000..0xb301ed90]
	at java.lang.Object.wait(Native Method)
	- waiting on <0x091c0a68> (a org.netbeans.modules.csl.core.GsfDocument)
	at java.lang.Object.wait(Object.java:474)
	at javax.swing.text.AbstractDocument.readLock(AbstractDocument.java:1392)
	- locked <0x091c0a68> (a org.netbeans.modules.csl.core.GsfDocument)
	at org.netbeans.editor.BaseDocument.render(BaseDocument.java:1363)
	at org.netbeans.modules.editor.hints.AnnotationHolder.setErrorDescriptions(AnnotationHolder.java:798)
	at org.netbeans.modules.editor.hints.HintsControllerImpl.setErrorsImpl(HintsControllerImpl.java:105)
	at org.netbeans.modules.editor.hints.HintsControllerImpl.setErrors(HintsControllerImpl.java:95)
	at org.netbeans.spi.editor.hints.HintsController$2.run(HintsController.java:90)
	at org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:573)
	at org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:1005)

"Java2D Disposer" daemon prio=10 tid=0x01022dd0 nid=0x8aba00 in Object.wait() [0xb2c1c000..0xb2c1cd90]
	at java.lang.Object.wait(Native Method)
	- waiting on <0x07e39ec0> (a java.lang.ref.ReferenceQueue$Lock)
	at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:120)
	- locked <0x07e39ec0> (a java.lang.ref.ReferenceQueue$Lock)
	at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:136)
	at sun.java2d.Disposer.run(Disposer.java:125)
	at java.lang.Thread.run(Thread.java:613)

"AWT-Shutdown" prio=5 tid=0x01021c40 nid=0x86ee00 in Object.wait() [0xb2a12000..0xb2a12d90]
	at java.lang.Object.wait(Native Method)
	- waiting on <0x07e39ef0> (a java.lang.Object)
	at java.lang.Object.wait(Object.java:474)
	at sun.awt.AWTAutoShutdown.run(AWTAutoShutdown.java:259)
	- locked <0x07e39ef0> (a java.lang.Object)
	at java.lang.Thread.run(Thread.java:613)

"AWT-AppKit" daemon prio=5 tid=0x01021660 nid=0xa03d8720 runnable [0x00000000..0xbfffd4b8]

"Active Reference Queue Daemon" daemon prio=1 tid=0x0101f120 nid=0x848600 in Object.wait() [0xb200d000..0xb200dd90]
	at java.lang.Object.wait(Native Method)
	- waiting on <0x07d03648> (a java.lang.ref.ReferenceQueue$Lock)
	at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:120)
	- locked <0x07d03648> (a java.lang.ref.ReferenceQueue$Lock)
	at org.openide.util.Utilities$ActiveQueue.run(Utilities.java:3153)
	at java.lang.Thread.run(Thread.java:613)

"Inactive RequestProcessor thread [Was:Default RequestProcessor/org.netbeans.napi.gsfret.source.Source$3]" daemon prio=1 tid=0x0101b5e0 
nid=0x871800 in Object.wait() [0xb2610000..0xb2610d90]
	at java.lang.Object.wait(Native Method)
	- waiting on <0x07d037e0> (a java.lang.Object)
	at org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:958)
	- locked <0x07d037e0> (a java.lang.Object)

"Timer-0" daemon prio=5 tid=0x0101aae0 nid=0x870a00 in Object.wait() [0xb240f000..0xb240fd90]
	at java.lang.Object.wait(Native Method)
	- waiting on <0x07d037e8> (a java.util.TaskQueue)
	at java.util.TimerThread.mainLoop(Timer.java:509)
	- locked <0x07d037e8> (a java.util.TaskQueue)
	at java.util.TimerThread.run(Timer.java:462)

"CLI Requests Server" daemon prio=5 tid=0x0101a1e0 nid=0x86fc00 runnable [0xb220e000..0xb220ed90]
	at java.net.PlainSocketImpl.socketAccept(Native Method)
	at java.net.PlainSocketImpl.accept(PlainSocketImpl.java:384)
	- locked <0x07d03808> (a java.net.SocksSocketImpl)
	at java.net.ServerSocket.implAccept(ServerSocket.java:450)
	at java.net.ServerSocket.accept(ServerSocket.java:421)
	at org.netbeans.CLIHandler$Server.run(CLIHandler.java:1003)

"Low Memory Detector" daemon prio=5 tid=0x0100f1b0 nid=0x81c800 runnable [0x00000000..0x00000000]

"CompilerThread0" daemon prio=9 tid=0x0100e300 nid=0x81ba00 waiting on condition [0x00000000..0xb18097d8]

"Signal Dispatcher" daemon prio=9 tid=0x0100de00 nid=0x814e00 waiting on condition [0x00000000..0x00000000]

"JDWP Event Helper Thread" daemon prio=5 tid=0x0100d6c0 nid=0x814000 runnable [0x00000000..0x00000000]

"JDWP Transport Listener: dt_socket" daemon prio=5 tid=0x0100c8b0 nid=0x805e00 runnable [0x00000000..0x00000000]

"Finalizer" daemon prio=8 tid=0x01007f30 nid=0x819c00 in Object.wait() [0xb1005000..0xb1005d90]
	at java.lang.Object.wait(Native Method)
	- waiting on <0x07d039e8> (a java.lang.ref.ReferenceQueue$Lock)
	at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:120)
	- locked <0x07d039e8> (a java.lang.ref.ReferenceQueue$Lock)
	at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:136)
	at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:159)

"Reference Handler" daemon prio=10 tid=0x01007b50 nid=0x818400 in Object.wait() [0xb0e04000..0xb0e04d90]
	at java.lang.Object.wait(Native Method)
	- waiting on <0x07d03678> (a java.lang.ref.Reference$Lock)
	at java.lang.Object.wait(Object.java:474)
	at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:116)
	- locked <0x07d03678> (a java.lang.ref.Reference$Lock)

"VM Thread" prio=9 tid=0x010072a0 nid=0x817600 runnable 

"VM Periodic Task Thread" prio=9 tid=0x0100fe40 nid=0x81d600 waiting on condition 

"Exception Catcher Thread" prio=10 tid=0x01001e60 nid=0x80be00 runnable 

Comment 4 David Konecny 2009-03-30 00:54:02 UTC

*** This issue has been marked as a duplicate of 161311 ***