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.
Found one Java-level deadlock: ============================= "org.netbeans.modules.html.navigator.HtmlNavigatorPanelUI": waiting to lock monitor 0x0d5048e4 (object 0x1d5baf70, a org.netbeans.modules.web.inspect.webkit.WebKitPageModel), which is held by "WebSocketServer" "WebSocketServer": waiting to lock monitor 0x0d54afac (object 0x1d23ad68, a org.netbeans.modules.html.navigator.HtmlNavigatorPanelUI), which is held by "org.netbeans.modules.web.inspect.webkit.WebKitPageModel" "org.netbeans.modules.web.inspect.webkit.WebKitPageModel": waiting to lock monitor 0x0d5048e4 (object 0x1d5baf70, a org.netbeans.modules.web.inspect.webkit.WebKitPageModel), which is held by "WebSocketServer" Java stack information for the threads listed above: =================================================== "org.netbeans.modules.html.navigator.HtmlNavigatorPanelUI": at o.n.m.web.inspect.webkit.WebKitPageModel.getDocumentNode (WebKitPageModel.java:208) - waiting to lock <0x1d5baf70> (a org.netbeans.modules.web.inspect.webkit.WebKitPageModel) at o.n.m.html.navigator.HtmlNavigatorPanelUI.refreshNodeDOMStatus (HtmlNavigatorPanelUI.java:319) at o.n.m.html.navigator.HtmlNavigatorPanelUI.access$600 (HtmlNavigatorPanelUI.java:117) at o.n.m.html.navigator.HtmlNavigatorPanelUI$4.run (HtmlNavigatorPanelUI.java:292) at o.o.util.RequestProcessor$Task.run(RequestProcessor.java:1454) at o.o.util.RequestProcessor$Processor.run(RequestProcessor.java:2036) "WebSocketServer": at o.n.m.html.navigator.HtmlNavigatorPanelUI.refreshDOM (HtmlNavigatorPanelUI.java:285) - waiting to lock <0x1d23ad68> (a org.netbeans.modules.html.navigator.HtmlNavigatorPanelUI) at o.n.m.html.navigator.HtmlNavigatorPanelUI.access$100 (HtmlNavigatorPanelUI.java:117) at o.n.m.html.navigator.HtmlNavigatorPanelUI$5.stateChanged (HtmlNavigatorPanelUI.java:323) at o.o.util.WeakListenerImpl$Change.stateChanged(WeakListenerImpl.java:329) at o.o.util.ChangeSupport.fireChange(ChangeSupport.java:133) at o.o.util.ChangeSupport.fireChange(ChangeSupport.java:119) at o.n.m.html.navigator.WebKitNodeDescription.fireChange (WebKitNodeDescription.java:135) at o.n.m.html.navigator.WebKitNodeDescription.fireChange (WebKitNodeDescription.java:137) at o.n.m.html.navigator.WebKitNodeDescription.fireChange (WebKitNodeDescription.java:137) at o.n.m.html.navigator.WebKitNodeDescription.fireChange (WebKitNodeDescription.java:137) at o.n.m.html.navigator.WebKitNodeDescription.fireChange (WebKitNodeDescription.java:137) at o.n.m.html.navigator.WebKitNodeDescription.fireChange (WebKitNodeDescription.java:137) at o.n.m.html.navigator.WebKitNodeDescription.access$000 (WebKitNodeDescription.java:68) at o.n.m.html.navigator.WebKitNodeDescription$1.propertyChange (WebKitNodeDescription.java:97) at sun.reflect.GeneratedMethodAccessor24.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at o.o.util.WeakListenerImpl$ProxyListener.invoke(WeakListenerImpl.java:457) at $Proxy9.propertyChange(Unknown Source) at o.o.nodes.Node.fireOwnPropertyChange(Node.java:1277) at o.o.nodes.Node$1.run(Node.java:541) at o.o.util.Mutex$1Exec.run(Mutex.java:1246) at o.o.nodes.Children$ProjectManagerDeadlockDetector.execute(Children.java:1921) at o.o.util.Mutex.postRequest(Mutex.java:1252) at o.o.util.Mutex.postRequest(Mutex.java:1215) at o.o.util.Mutex.postWriteRequest(Mutex.java:587) at o.o.nodes.Node.setChildren(Node.java:504) at o.n.m.web.inspect.webkit.DOMNode.updateChildren(DOMNode.java:226) at o.n.m.web.inspect.webkit.WebKitPageModel.updateNodes (WebKitPageModel.java:477) at o.n.m.web.inspect.webkit.WebKitPageModel.access$100(WebKitPageModel.java:72) at o.n.m.web.inspect.webkit.WebKitPageModel$1.childNodesSet (WebKitPageModel.java:255) - locked <0x1d5baf70> (a org.netbeans.modules.web.inspect.webkit.WebKitPageModel) at o.n.m.web.webkit.debugging.api.dom.DOM.notifyChildNodesSet(DOM.java:463) at o.n.m.web.webkit.debugging.api.dom.DOM.handleSetChildNodes(DOM.java:553) at o.n.m.web.webkit.debugging.api.dom.DOM$Callback.handleResponse(DOM.java:729) at o.n.m.web.webkit.debugging.TransportHelper.notifyListeners (TransportHelper.java:152) at o.n.m.web.webkit.debugging.TransportHelper.access$200 (TransportHelper.java:67) at o.n.m.web.webkit.debugging.TransportHelper$Callback.handleResponse (TransportHelper.java:263) at o.n.m.extbrowser.plugins.ExternalBrowserPlugin$BrowserPluginHandler .handleDebuggerResponse(ExternalBrowserPlugin.java:403) at o.n.m.extbrowser.plugins.ExternalBrowserPlugin$BrowserPluginHandler .read(ExternalBrowserPlugin.java:273) at o.n.m.netserver.websocket.WebSocketHandler7.readDelegate (WebSocketHandler7.java:118) at o.n.m.netserver.websocket.AbstractWSHandler7.readData (AbstractWSHandler7.java:301) at o.n.m.netserver.websocket.AbstractWSHandler7.readFinalFrame (AbstractWSHandler7.java:263) at o.n.m.netserver.websocket.AbstractWSHandler7.read (AbstractWSHandler7.java:126) at o.n.m.netserver.websocket.WebSocketServerImpl$WebSocketHandler .read(WebSocketServerImpl.java:207) at o.n.m.netserver.SocketFramework.readData(SocketFramework.java:175) at o.n.m.netserver.SocketFramework.process(SocketFramework.java:149) at o.n.m.netserver.SocketServer.process(SocketServer.java:106) at o.n.m.netserver.SocketFramework.doRun(SocketFramework.java:136) at o.n.m.netserver.SocketServer.run(SocketServer.java:77) at o.o.util.RequestProcessor$Task.run(RequestProcessor.java:1454) at o.o.util.RequestProcessor$Processor.run(RequestProcessor.java:2036) "org.netbeans.modules.web.inspect.webkit.WebKitPageModel": at o.n.m.web.inspect.webkit.WebKitPageModel.setSelectedNodes (WebKitPageModel.java:495) - waiting to lock <0x1d5baf70> (a org.netbeans.modules.web.inspect.webkit.WebKitPageModel) at o.n.m.html.navigator.HtmlNavigatorPanelUI.pageModelDocumentChanged (HtmlNavigatorPanelUI.java:243) - locked <0x1d23ad68> (a org.netbeans.modules.html.navigator.HtmlNavigatorPanelUI) at o.n.m.html.navigator.HtmlNavigatorPanelUI.access$200 (HtmlNavigatorPanelUI.java:117) at o.n.m.html.navigator.HtmlNavigatorPanelUI$2.propertyChange (HtmlNavigatorPanelUI.java:167) at java.beans.PropertyChangeSupport.firePropertyChange (PropertyChangeSupport.java:339) at java.beans.PropertyChangeSupport.firePropertyChange (PropertyChangeSupport.java:276) at o.n.m.web.inspect.PageModel.firePropertyChange(PageModel.java:237) at o.n.m.web.inspect.webkit.WebKitPageModel.access$600(WebKitPageModel.java:72) at o.n.m.web.inspect.webkit.WebKitPageModel$1$1.run(WebKitPageModel.java:306) at o.o.util.RequestProcessor$Task.run(RequestProcessor.java:1454) at o.o.util.RequestProcessor$Processor.run(RequestProcessor.java:2036) Found 1 deadlock.
Updating children of DOMNode in WebSocketServer thread not only results in this deadlock but also blocks this important thread even when there is no race condition resulting in the deadlock => moving the update into a separate thread. Modified file: http://hg.netbeans.org/web-main/rev/2c5bc3c08d4d