diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/InstructionPointerManager.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/InstructionPointerManager.java
index f5d1db0..42b1aab 100644
--- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/InstructionPointerManager.java
+++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/InstructionPointerManager.java
@@ -92,8 +92,10 @@
 	 * specified stack frame.
 	 */
 	public void addAnnotation(ITextEditor textEditor, IStackFrame frame, Annotation annotation) {
-
 		IDocumentProvider docProvider = textEditor.getDocumentProvider();
+		if (docProvider == null) {
+			return;
+		}
 		IEditorInput editorInput = textEditor.getEditorInput();
 		// If there is no annotation model, there's nothing more to do
 		IAnnotationModel annModel = docProvider.getAnnotationModel(editorInput);
diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/sourcelookup/SourceLookupFacility.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/sourcelookup/SourceLookupFacility.java
index a3ee70b..c356da3 100644
--- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/sourcelookup/SourceLookupFacility.java
+++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/sourcelookup/SourceLookupFacility.java
@@ -69,6 +69,7 @@
 import org.eclipse.ui.IWorkbenchPage;
 import org.eclipse.ui.IWorkbenchPart;
 import org.eclipse.ui.IWorkbenchPartReference;
+import org.eclipse.ui.IWorkbenchPartSite;
 import org.eclipse.ui.IWorkbenchWindow;
 import org.eclipse.ui.PartInitException;
 import org.eclipse.ui.progress.UIJob;
@@ -467,7 +468,7 @@
 					// open a new editor
 					editor = openEditor(page, input, id);
 					editorForPage = editor;
-				} else if (editorForPage instanceof IReusableEditor && editorForPage.getSite().getId().equals(id)) {
+				} else if (canReuseEditor(input, id, editorForPage)) {
 					// re-use editor
 					page.reuseEditor((IReusableEditor)editorForPage, input);
 					editor = editorForPage;
@@ -477,8 +478,10 @@
 				} else {
 					// close editor, open a new one
 					editor = openEditor(page, input, id);
-					page.closeEditor(editorForPage, false);
-					editorForPage = editor;
+					if (editor != editorForPage) {
+						page.closeEditor(editorForPage, false);
+						editorForPage = editor;
+					}
 				}
 				setEditor(page, editorForPage);
 			}
@@ -489,6 +492,22 @@
 		return editor;
 	}
 
+	private static boolean canReuseEditor(IEditorInput input, String id, IEditorPart editorForPage) {
+		if (!(editorForPage instanceof IReusableEditor)) {
+			return false;
+		}
+		IWorkbenchPartSite site = editorForPage.getSite();
+		if (site == null) {
+			// editor is disposed
+			return false;
+		}
+		if (site.getId().equals(id)) {
+			return true;
+		}
+		IEditorInput editorInput = editorForPage.getEditorInput();
+		return editorInput != null && input.equals(editorInput);
+	}
+
 	/**
 	 * Positions the text editor for the given stack frame
 	 */
@@ -510,10 +529,14 @@
 	}
 
 	/**
-	 * Returns the line information for the given line in the given editor
+	 * Returns the line information for the given line in the given editor, or
+	 * {@code null} if no information could be retrieved or error happens
 	 */
 	private IRegion getLineInformation(ITextEditor editor, int lineNumber) {
 		IDocumentProvider provider= editor.getDocumentProvider();
+		if (provider == null) {
+			return null;
+		}
 		IEditorInput input= editor.getEditorInput();
 		try {
 			provider.connect(input);
