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.
This is Sun bugtraq 4649460. Can get a deadlock between two threads as shown below. Term can call swing at the same time swing is calling Term. Naively this is a lock ordering problem. "org.netbeans.core.ModuleActions-6" daemon prio=1 tid=0x9fbe98 nid=0xec waiting for monitor entry [0xe0f00000..0xe0f019d8] treelock->at java.awt.Component.reshape(Component.java:1407) at javax.swing.JComponent.reshape(JComponent.java:2926) at java.awt.Component.setBounds(Component.java:1399) at javax.swing.plaf.basic.BasicScrollBarUI.layoutVScrollbar(BasicScrollBarUI.java:538) at javax.swing.plaf.basic.BasicScrollBarUI.layoutContainer(BasicScrollBarUI.java:663) at javax.swing.plaf.basic.BasicScrollBarUI$ModelListener.stateChanged(BasicScrollBarUI.java:776) at javax.swing.DefaultBoundedRangeModel.fireStateChanged(DefaultBoundedRangeModel.java:329) at javax.swing.DefaultBoundedRangeModel.setRangeProperties(DefaultBoundedRangeModel.java:285) at javax.swing.JScrollBar.setValues(JScrollBar.java:565) at org.netbeans.lib.terminalemulator.Term.adjust_scrollbar(Term.java:3243) at org.netbeans.lib.terminalemulator.Term.limit_lines(Term.java:1189) at org.netbeans.lib.terminalemulator.Term.access$2900(Term.java:160) at org.netbeans.lib.terminalemulator.Term$OpsImpl.op_line_feed(Term.java:2741) at org.netbeans.lib.terminalemulator.InterpDumb$4.action(InterpDumb.java:148) at org.netbeans.lib.terminalemulator.InterpDumb.processChar(InterpDumb.java:94) at org.netbeans.lib.terminalemulator.Term.putc_work(Term.java:3198) termlock->at org.netbeans.lib.terminalemulator.Term.appendText(Term.java:3947) at org.netbeans.core.output.OutputTabTerm$OutTermPane$TermOutputWriter.appendText(OutputTabTerm.java:1339) at org.netbeans.core.output.OutputTabTerm$OutTermPane$TermOutputWriter.write(OutputTabTerm.java:1050) at org.netbeans.core.output.OutputTabTerm$OutTermPane$TermOutputWriter.write(OutputTabTerm.java:1109) at java.io.PrintWriter.write(PrintWriter.java:229) at org.netbeans.core.execution.WriterPrintStream.write(WriterPrintStream.java:56) at org.netbeans.core.execution.WriterPrintStream.print(WriterPrintStream.java:189) at org.netbeans.core.execution.WriterPrintStream.println(WriterPrintStream.java:339) at com.sun.forte4j.j2ee.appsrv.RI.RIAppServerInstance.deploy(RIAppServerInstance.java:397) at com.sun.forte4j.j2ee.appsrv.RI.RIAppServerInstance.deploy(RIAppServerInstance.java:1116) at org.netbeans.modules.j2ee.impl.DefaultServerInstanceManager.doDeploy(DefaultServerInstanceManager.java:147) at org.netbeans.modules.j2ee.impl.DefaultServerInstanceManager.startDeployment(DefaultServerInstanceManager.java:173) at org.netbeans.modules.j2ee.impl.DefaultServerInstanceManager.serverInstanceDeployment(DefaultServerInstanceManager.java:112) at org.netbeans.modules.j2ee.impl.DefaultExecPerformer.startDeployment(DefaultExecPerformer.java:116) at org.netbeans.modules.j2ee.impl.ServerExecutor.execute(ServerExecutor.java:72) at org.netbeans.modules.j2ee.impl.ServerExecutor.execute(ServerExecutor.java:64) at org.netbeans.modules.j2ee.impl.ExecSupport.start(ExecSupport.java:125) at org.netbeans.modules.j2ee.impl.ServerExecSupport.start(ServerExecSupport.java:139) at org.openide.actions.ExecuteAction.execute(ExecuteAction.java:140) at org.openide.actions.ExecuteAction.execute(ExecuteAction.java:237) at org.openide.actions.ExecuteAction.performAction(ExecuteAction.java:102) at org.netbeans.modules.j2ee.impl.DeployAction.performAction(DeployAction.java:42) at org.openide.util.actions.NodeAction.performAction(NodeAction.java:180) at org.openide.util.actions.NodeAction.actionPerformed(NodeAction.java:171) at org.netbeans.core.ModuleActions$1.run(ModuleActions.java:105) at org.openide.util.Task.run(Task.java:152) at org.openide.util.RequestProcessor$ProcessorThread.run(RequestProcessor.java:622) "AWT-EventQueue-0" prio=5 tid=0x3223b8 nid=0xc waiting for monitor entry [0xe72ff000..0xe73019d8] termlock->at org.netbeans.lib.terminalemulator.Term.do_paint(Term.java:2389) at org.netbeans.lib.terminalemulator.Screen.paint(Screen.java:89) at javax.swing.JComponent.paintChildren(JComponent.java:498) at javax.swing.JComponent.paint(JComponent.java:696) at javax.swing.JComponent.paintChildren(JComponent.java:498) at javax.swing.JComponent.paint(JComponent.java:696) at javax.swing.JComponent.paintChildren(JComponent.java:498) at javax.swing.JComponent.paint(JComponent.java:696) at javax.swing.JComponent.paintChildren(JComponent.java:498) at javax.swing.JComponent.paint(JComponent.java:696) at javax.swing.JComponent.paintChildren(JComponent.java:498) at javax.swing.JComponent.paint(JComponent.java:696) at javax.swing.JComponent.paintChildren(JComponent.java:498) at javax.swing.JComponent.paint(JComponent.java:696) at javax.swing.JComponent.paintChildren(JComponent.java:498) at javax.swing.JComponent.paint(JComponent.java:696) at javax.swing.JComponent.paintWithBuffer(JComponent.java:3878) at javax.swing.JComponent._paintImmediately(JComponent.java:3821) at javax.swing.JComponent.paintImmediately(JComponent.java:3672) at javax.swing.RepaintManager.paintDirtyRegions(RepaintManager.java:370) at javax.swing.SystemEventQueueUtilities$ComponentWorkRequest.run(SystemEventQueueUtilities.java:124) at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:154) at java.awt.EventQueue.dispatchEvent(EventQueue.java:337) at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:131) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:98) at java.awt.Dialog.show(Dialog.java:380) at org.netbeans.core.NbPresenter.superShow(NbPresenter.java:642) at org.netbeans.core.NbPresenter.run(NbPresenter.java:665) at org.openide.util.Mutex.doEventAccess(Mutex.java:917) at org.openide.util.Mutex.readAccess(Mutex.java:162) at org.netbeans.core.NbPresenter.show(NbPresenter.java:646) treelock->at java.awt.Component.show(Component.java:946) at java.awt.Component.setVisible(Component.java:903) at org.netbeans.modules.j2ee.impl.ProgressObject$4.run(ProgressObject.java:131) at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:154) at java.awt.EventQueue.dispatchEvent(EventQueue.java:337) at java.awt.EventDispatchThread.pumpOneEventForHierarchy(EventDispatchThread.java:131) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:98) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) at java.awt.EventDispatchThread.run(EventDispatchThread.java:85)
> at javax.swing.JScrollBar.setValues(JScrollBar.java:565) at org.netbeans.lib.terminalemulator.Term.adjust_scrollbar(Term.java:3243) this is fatal. Term is calling Swing from a thread other than AWT Event thread. What is the thread commitment of term? thread-safe? thread-compatible? swing-like (call me only from within awt event thread)? "I-don't-promise-anything"?
well, I've fixed the bug. adjust_scrollbars() now makes sure that it call JScrollBars only from AWT event thread
Thanks.
IMO, this should be fixed for Orion and the next bugfix release of NetBeans. Attaching the 3.3.2_CANDIDATE keyword.
Agreed, needed for Orion FCS, thanks Honza.
Tor is about to apply this to Orion.
verified in [nb_dev](20021016)
Resolved for 3.4.x or earlier, no new info since then -> closing.
moving terminal emulator issues to terminalemulator component. To see the correct version and target milestone of this issue look at Issue Activity table.