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.
Build: NetBeans IDE 7.3 (Build 201302132200) VM: Java HotSpot(TM) Client VM, 23.7-b01, Java(TM) SE Runtime Environment, 1.7.0_15-b03 OS: Windows XP Maximum slowness yet reported was 50219 ms, average is 36735
Created attachment 132282 [details] nps snapshot
There are two snapshots attached to this issue by the slowness reporter by now. The snapshot 660635 shows the event-dispatch thread blocked by waiting for PageInspectorImpl.LOCK lock in PageInspectorImpl.getPage() (for 12944ms). The lock is held by ExternalBrowserPlugin thread in PageInspectorImpl.inspectPage() for 13124ms. The snapshot 663206 shows the even-dispatch thread blocked by waiting for 1) PageInspectorImpl.LOCK lock in PageInspectorImpl.getPage() (for 30113ms) 2) WebKitPageModel.this lock in WebKitPageModel.getSelectedNodes() (for 9986ms) The PageInspectorImpl.LOCK lock is held by ExternalBrowserPlugin thread in PageInspectorImpl.inspectPage() for 40115ms. The WebKitPageModel.this lock is held by 2.1) ExternalBrowserPlugin thread in WebKitPageModel.getDocumentNode() (for 5014m) 2.2) PageInspectorImpl thread in WebKitPageModel.getDocumentNode() (for 4986ms) Summary: PageInspectorImpl.getPage() is called from various places. Hence, it needs to be fast, i.e., we have to ensure that it is not blocked by PageInspectorImpl.LOCK that can be held by some thread for significant time. WebKitPageModel.this shouldn't be held for long time. There are may methods synchronized on this lock that are called from various places and should be fast (like getSelectedNodes(), isSelectionMode() etc.) The only method that can block WebKitPageModel.this for long time is getDocumentNode() by now. It should be rewritten.
Fixed. Modified files: http://hg.netbeans.org/web-main/rev/3923200eee7b http://hg.netbeans.org/web-main/rev/d80fb04b24bd