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 221712 - Deadlock when running an HTML file
Summary: Deadlock when running an HTML file
Status: RESOLVED FIXED
Alias: None
Product: web
Classification: Unclassified
Component: Inspection (show other bugs)
Version: 7.3
Hardware: PC Windows 7
: P2 normal (vote)
Assignee: Jan Stola
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2012-11-08 11:03 UTC by Jan Stola
Modified: 2012-11-08 14:08 UTC (History)
0 users

See Also:
Issue Type: DEFECT
Exception Reporter:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Jan Stola 2012-11-08 11:03:06 UTC
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.
Comment 1 Jan Stola 2012-11-08 14:08:02 UTC
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