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.
Dead lock in LineTranslations.java prevent java code from openning. Close netbeans with a lot of documents opened. Some of them have breakpoints in it. Reopen netbeans, switch to a document with breakpoints. Sometime you will not able to open it. It's cased by dead lock in LineTranslations.java. org.netbeans.modules.debugger.jpda.projects.LineTranslations$BreakpointLineUpdater.attach(LineTranslations.java:435) locked the LineTranslations and try to open document. org.netbeans.modules.debugger.jpda.projects.LineTranslations$BreakpointLineUpdater.propertyChange(LineTranslations.java:514) try to inter synchronized statements which block then. Stacks of the two threads: org.openide.text Document Processing: org.netbeans.modules.debugger.jpda.projects.LineTranslations$BreakpointLineUpdater.propertyChange(LineTranslations.java:514) java.beans.PropertyChangeSupport.fire(PropertyChangeSupport.java:335) java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:327) java.beans.PropertyChangeSupport.firePropertyChange(PropertyChangeSupport.java:263) org.openide.text.CloneableEditorSupport.firePropertyChange(CloneableEditorSupport.java:483) org.openide.text.CloneableEditorSupport.fireDocumentChange(CloneableEditorSupport.java:1730) org.openide.text.DocumentOpenClose$DocumentClose.run(DocumentOpenClose.java:1007) org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:1432) org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:2042) org.openide.text Editor Initialization: java.lang.Object.wait(Object.java) java.lang.Object.wait(Object.java:503) org.openide.util.Task.waitFinished(Task.java:135) org.openide.util.RequestProcessor$Task.waitFinished(RequestProcessor.java:1686) org.openide.text.DocumentOpenClose.open(DocumentOpenClose.java:256) org.openide.text.CloneableEditorSupport.openDocument(CloneableEditorSupport.java:573) org.openide.text.DataEditorSupport.openDocument(DataEditorSupport.java:587) org.openide.text.PositionRef$Manager$OffsetKind.getLine(PositionRef.java:689) org.openide.text.PositionRef.getLine(PositionRef.java:181) org.openide.text.DocumentLine.getLineNumber(DocumentLine.java:123) org.openide.text.DocumentLine.equals(DocumentLine.java:253) java.util.WeakHashMap.eq(WeakHashMap.java:343) java.util.WeakHashMap.get(WeakHashMap.java:468) org.openide.text.Line$Set.registerLine(Line.java:562) org.openide.text.DocumentLine$Set.access$201(DocumentLine.java:917) org.openide.text.DocumentLine$Set$1DocumentRenderer.run(DocumentLine.java:1086) org.openide.text.DocumentLine$Set.safelyRegisterLine(DocumentLine.java:1094) org.openide.text.DocumentLine$Set.getCurrent(DocumentLine.java:1057) org.netbeans.modules.debugger.jpda.projects.LineTranslations$BreakpointLineUpdater.attach(LineTranslations.java:435) org.netbeans.modules.debugger.jpda.projects.LineTranslations.registerForLineUpdates(LineTranslations.java:321) org.netbeans.modules.debugger.jpda.projects.BreakpointAnnotationProvider.breakpointAdded(BreakpointAnnotationProvider.java:200) org.netbeans.api.debugger.DebuggerManager.fireBreakpointCreated(DebuggerManager.java:883) org.netbeans.api.debugger.DebuggerManager.initBreakpoints(DebuggerManager.java:1055) org.netbeans.api.debugger.DebuggerManager.initBreakpoints(DebuggerManager.java:959) org.netbeans.api.debugger.DebuggerManager.getBreakpoints(DebuggerManager.java:597) org.netbeans.modules.debugger.jpda.projects.BreakpointAnnotationProvider.annotate(BreakpointAnnotationProvider.java:158) org.netbeans.modules.debugger.jpda.projects.BreakpointAnnotationProvider.annotate(BreakpointAnnotationProvider.java:147) org.openide.text.CloneableEditorSupport.ensureAnnotationsLoaded(CloneableEditorSupport.java:392) org.openide.text.CloneableEditorInitializer.initAnnotations(CloneableEditorInitializer.java:608) org.openide.text.CloneableEditorInitializer.run(CloneableEditorInitializer.java:333) org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:1432) org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:2042)
Possible fix: diff -r fb5899fd7e80 debugger.jpda.projects/src/org/netbeans/modules/debugger/jpda/projects/LineTranslations.java --- a/debugger.jpda.projects/src/org/netbeans/modules/debugger/jpda/projects/LineTranslations.java Tue Sep 17 12:03:48 2013 +0800 +++ b/debugger.jpda.projects/src/org/netbeans/modules/debugger/jpda/projects/LineTranslations.java Wed Sep 18 03:53:11 2013 +0800 @@ -482,6 +482,9 @@ @Override public void propertyChange(PropertyChangeEvent evt) { String propertyName = evt.getPropertyName(); + if (EditorCookie.Observable.PROP_DOCUMENT.equals(propertyName)){ + return; + } if (EditorCookie.Observable.PROP_OPENED_PANES.equals(propertyName)) { DataEditorSupport des = dataObject.getLookup().lookup(DataEditorSupport.class); JEditorPane[] openedPanes;
Ignore more events: diff -r 762a1771e291 debugger.jpda.projects/src/org/netbeans/modules/debugger/jpda/projects/LineTranslations.java --- a/debugger.jpda.projects/src/org/netbeans/modules/debugger/jpda/projects/LineTranslations.java Wed Sep 18 04:18:34 2013 +0800 +++ b/debugger.jpda.projects/src/org/netbeans/modules/debugger/jpda/projects/LineTranslations.java Wed Sep 18 09:15:59 2013 +0800 @@ -52,6 +52,7 @@ import java.net.MalformedURLException; import java.net.URL; import java.util.ArrayList; +import java.util.Arrays; import java.util.HashMap; import java.util.HashSet; import java.util.List; @@ -478,10 +479,18 @@ } } } - + final List<String> observedEvents = Arrays.asList(EditorCookie.Observable.PROP_OPENED_PANES + ,Line.PROP_LINE_NUMBER + ,Line.PROP_TEXT + ,LineBreakpoint.PROP_URL); //propertyChange handles only these events + @Override public void propertyChange(PropertyChangeEvent evt) { String propertyName = evt.getPropertyName(); + if (observedEvents.contains(propertyName)){ + return; + } + if (EditorCookie.Observable.PROP_OPENED_PANES.equals(propertyName)) { DataEditorSupport des = dataObject.getLookup().lookup(DataEditorSupport.class); JEditorPane[] openedPanes;
Sorry, not contains: diff -r 762a1771e291 debugger.jpda.projects/src/org/netbeans/modules/debugger/jpda/projects/LineTranslations.java --- a/debugger.jpda.projects/src/org/netbeans/modules/debugger/jpda/projects/LineTranslations.java Wed Sep 18 04:18:34 2013 +0800 +++ b/debugger.jpda.projects/src/org/netbeans/modules/debugger/jpda/projects/LineTranslations.java Wed Sep 18 09:15:59 2013 +0800 @@ -52,6 +52,7 @@ import java.net.MalformedURLException; import java.net.URL; import java.util.ArrayList; +import java.util.Arrays; import java.util.HashMap; import java.util.HashSet; import java.util.List; @@ -478,10 +479,18 @@ } } } - + final List<String> observedEvents = Arrays.asList(EditorCookie.Observable.PROP_OPENED_PANES + ,Line.PROP_LINE_NUMBER + ,Line.PROP_TEXT + ,LineBreakpoint.PROP_URL); //propertyChange handles only these events + @Override public void propertyChange(PropertyChangeEvent evt) { String propertyName = evt.getPropertyName(); + if (!observedEvents.contains(propertyName)){ + return; + } + if (EditorCookie.Observable.PROP_OPENED_PANES.equals(propertyName)) { DataEditorSupport des = dataObject.getLookup().lookup(DataEditorSupport.class); JEditorPane[] openedPanes;
This is a duplicate of issue #236095, where is a full thread dump with monitors attached. *** This bug has been marked as a duplicate of bug 236095 ***