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.
Summary: | Deadlock on IDE startup on Windows | ||
---|---|---|---|
Product: | cnd | Reporter: | Vladimir Kvashin <vkvashin> |
Component: | Remote | Assignee: | Vladimir Kvashin <vkvashin> |
Status: | VERIFIED FIXED | ||
Severity: | normal | CC: | apepin |
Priority: | P2 | ||
Version: | 7.0 | ||
Hardware: | PC | ||
OS: | Windows XP | ||
Issue Type: | DEFECT | Exception Reporter: | |
Attachments: | Full thread dump |
Here is the deadlock reason. Three threads are involved. 1). "AWT-EventQueue-1" prio=6 tid=0x0707f800 waiting to lock <0x1c88d6f8> (a MakeConfigurationDescriptor) at synchronized MakeConfigurationDescriptor.waitInitTask(MakeConfigurationDescriptor.java:284 at the same time it locked <0x1abdf3a8> (java.awt.Component$AWTTreeLock - static field in Component) 2). "Open project" daemon prio=2 tid=0x05b2d400 waiting on <0x1c88d6c8> (a org.openide.util.RequestProcessor$Task) at the same time it locked <0x1c88d6f8> (org.netbeans.modules.cnd.makeproject.api.configurations.MakeConfigurationDescriptor) The task the thread above waits for is 3). "Reading project configuraion" daemon prio=2 tid=0x4b633400 nid=0x40c waiting for monitor entry [0x0fe6e000] java.lang.Thread.State: BLOCKED (on object monitor) java.awt.Component.setFont(Component.java:1800) - waiting to lock <0x1abdf3a8> (a java.awt.Component$AWTTreeLock) java.awt.Container.setFont(Container.java:1554) javax.swing.JComponent.setFont(JComponent.java:2723) javax.swing.LookAndFeel.installColorsAndFont(LookAndFeel.java:191) javax.swing.plaf.basic.BasicButtonUI.installDefaults(BasicButtonUI.java:94) com.sun.java.swing.plaf.windows.WindowsButtonUI.installDefaults(WindowsButtonUI.java:69) javax.swing.plaf.basic.BasicButtonUI.installUI(BasicButtonUI.java:71) javax.swing.JComponent.setUI(JComponent.java:662) javax.swing.AbstractButton.setUI(AbstractButton.java:1782) javax.swing.JButton.updateUI(JButton.java:128) javax.swing.AbstractButton.init(AbstractButton.java:2149) javax.swing.JButton.<init>(JButton.java:118) javax.swing.JButton.<init>(JButton.java:91) org.netbeans.modules.remote.impl.fs.ui.ConnectionNotifierDelegate.createDetails(ConnectionNotifierDelegate.java:219) org.netbeans.modules.remote.impl.fs.ui.ConnectionNotifierDelegate.show(ConnectionNotifierDelegate.java:204) org.netbeans.modules.remote.impl.fs.ui.ConnectionNotifierDelegate.showIfNeed(ConnectionNotifierDelegate.java:165) - locked <0x1c8f84a8> (a org.netbeans.modules.remote.impl.fs.ui.ConnectionNotifierDelegate) org.netbeans.modules.remote.impl.fs.ui.ConnectionNotifierDelegate.addTask(ConnectionNotifierDelegate.java:110) - locked <0x1c8f8570> (a java.util.HashSet) org.netbeans.modules.remote.impl.fs.ui.ConnectionNotifierImpl.addTask(ConnectionNotifierImpl.java:59) org.netbeans.modules.remote.api.ui.ConnectionNotifier.addTask(ConnectionNotifier.java:100) org.netbeans.modules.remote.impl.fs.RemoteFileSystem$RemoteFileSupport.addPendingFile(RemoteFileSystem.java:568) org.netbeans.modules.remote.impl.fs.RemoteFileSystem.addPendingFile(RemoteFileSystem.java:280) org.netbeans.modules.remote.impl.fs.RemoteDirectory.checkConnection(RemoteDirectory.java:1163) org.netbeans.modules.remote.impl.fs.RemoteDirectory._getInputStream(RemoteDirectory.java:1110) org.netbeans.modules.remote.impl.fs.RemotePlainFile.getInputStream(RemotePlainFile.java:129) I believe the guilty one is the 3-rd, it should move UI-related stuff to UI thread via SwingUtilities.invokeLater. see also fix of Bug #199464 LowPerformance took 126647 ms. probably this warning is a root of problem: java.lang.IllegalStateException: This must happen in the event thread! at org.openide.awt.Actions$Bridge.propertyChange(Actions.java:885) at org.openide.util.WeakListenerImpl$PropertyChange.propertyChange(WeakListenerImpl.java:196) at java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:339) at javax.swing.event.SwingPropertyChangeSupport.firePropertyChange(SwingPropertyChangeSupport.java:75) at java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:276) at javax.swing.AbstractAction.firePropertyChange(AbstractAction.java:254) at javax.swing.AbstractAction.setEnabled(AbstractAction.java:214) at org.netbeans.modules.remote.ui.HostListRootNode$AddHostAction.run(HostListRootNode.java:144) at org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:1424) at org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:1968) Warning occurred when I add remote host. fixed in cnd-main: http://hg.netbeans.org/cnd-main/rev/5b5be820dc6e Integrated into 'main-golden' Changeset: http://hg.netbeans.org/main-golden/rev/5b5be820dc6e User: Vladimir Kvashin <vkvashin@netbeans.org> Log: fixed #199469 - Deadlock on IDE startup on Windows fix is reviewed. Looks ok and safe. Can not verify the fix as the deadlock happened once (or occasionally). Please push the fix into 7.0.1 branch. pushed into release701 http://hg.netbeans.org/releases/rev/43968e2ad8ad Integrated into 'releases' Changeset: http://hg.netbeans.org/releases/rev/43968e2ad8ad User: Vladimir Kvashin <vkvashin@netbeans.org> Log: fixed #199469 - Deadlock on IDE startup on Windows (transplanted from 5b5be820dc6e4725271cf6a3ad2a99901de07000) It does not need verification. |
Created attachment 108930 [details] Full thread dump I've found this when running SolStudio Windows Distribution. But thread dump (attached) shows that the root cause is in CND. IDE froze forever.