Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
Bug 305113 - [compare] NPE in JavaReconciler.uninstall(..) while opening compare editor
Summary: [compare] NPE in JavaReconciler.uninstall(..) while opening compare editor
Status: CLOSED DUPLICATE of bug 272953
Alias: None
Product: JDT
Classification: Eclipse Project
Component: Text (show other bugs)
Version: 3.6   Edit
Hardware: PC Windows XP
: P3 normal (vote)
Target Milestone: ---   Edit
Assignee: JDT-Text-Inbox CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2010-03-09 03:41 EST by Deepak Azad CLA
Modified: 2010-03-12 02:53 EST (History)
1 user (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Deepak Azad CLA 2010-03-09 03:41:37 EST
From Bug 300157 comment 11
I have this habit of clicking on 'Next Difference' icon in the 'Synchronize'
view multiple times very fast to open all the files that have changed (since
there is no expand all button). When the number of changed files are about 10 I see exceptions in the error log. 

Atleast after the fix for 300157 no blocking dialog pops up and makes Eclipse unusable.

java.lang.NullPointerException
	at org.eclipse.jdt.internal.ui.text.JavaReconciler.uninstall(JavaReconciler.java:341)
	at org.eclipse.jface.text.source.SourceViewer.unconfigure(SourceViewer.java:692)
	at org.eclipse.jdt.internal.ui.javaeditor.JavaSourceViewer.unconfigure(JavaSourceViewer.java:357)
	at org.eclipse.jface.text.source.SourceViewer.handleDispose(SourceViewer.java:745)
	at org.eclipse.jface.text.source.projection.ProjectionViewer.handleDispose(ProjectionViewer.java:1363)
	at org.eclipse.jdt.internal.ui.javaeditor.JavaSourceViewer.handleDispose(JavaSourceViewer.java:462)
	at org.eclipse.jface.text.TextViewer$2.widgetDisposed(TextViewer.java:1798)
	at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:117)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1050)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1074)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1059)
	at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:773)
	at org.eclipse.swt.custom.StyledText.handleDispose(StyledText.java:5816)
	at org.eclipse.swt.custom.StyledText$7.handleEvent(StyledText.java:5642)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1050)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1074)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1055)
	at org.eclipse.swt.widgets.Widget.release(Widget.java:807)
	at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:874)
	at org.eclipse.swt.widgets.Canvas.releaseChildren(Canvas.java:167)
	at org.eclipse.swt.widgets.Widget.release(Widget.java:810)
	at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:874)
	at org.eclipse.swt.widgets.Widget.release(Widget.java:810)
	at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:874)
	at org.eclipse.swt.widgets.Widget.release(Widget.java:810)
	at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:874)
	at org.eclipse.swt.widgets.Widget.release(Widget.java:810)
	at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:874)
	at org.eclipse.swt.widgets.Widget.release(Widget.java:810)
	at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:874)
	at org.eclipse.swt.widgets.Widget.release(Widget.java:810)
	at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:874)
	at org.eclipse.swt.widgets.Widget.release(Widget.java:810)
	at org.eclipse.swt.widgets.Widget.dispose(Widget.java:445)
	at org.eclipse.ui.internal.PartPane.dispose(PartPane.java:180)
	at org.eclipse.ui.internal.WorkbenchPartReference.dispose(WorkbenchPartReference.java:681)
	at org.eclipse.ui.internal.WorkbenchPage.disposePart(WorkbenchPage.java:1721)
	at org.eclipse.ui.internal.WorkbenchPage.handleDeferredEvents(WorkbenchPage.java:1426)
	at org.eclipse.ui.internal.WorkbenchPage.deferUpdates(WorkbenchPage.java:1410)
	at org.eclipse.ui.internal.WorkbenchPage.closeEditors(WorkbenchPage.java:1384)
	at org.eclipse.ui.internal.WorkbenchPage.closeEditor(WorkbenchPage.java:1439)
	at org.eclipse.ui.internal.EditorPane.doHide(EditorPane.java:61)
	at org.eclipse.ui.internal.PartStack.close(PartStack.java:541)
	at org.eclipse.ui.internal.EditorStack.close(EditorStack.java:206)
	at org.eclipse.ui.internal.PartStack$1.close(PartStack.java:120)
	at org.eclipse.ui.internal.presentations.util.TabbedStackPresentation$1.handleEvent(TabbedStackPresentation.java:83)
	at org.eclipse.ui.internal.presentations.util.AbstractTabFolder.fireEvent(AbstractTabFolder.java:269)
	at org.eclipse.ui.internal.presentations.util.AbstractTabFolder.fireEvent(AbstractTabFolder.java:278)
	at org.eclipse.ui.internal.presentations.defaultpresentation.DefaultTabFolder.access$1(DefaultTabFolder.java:1)
	at org.eclipse.ui.internal.presentations.defaultpresentation.DefaultTabFolder$1.closeButtonPressed(DefaultTabFolder.java:71)
	at org.eclipse.ui.internal.presentations.PaneFolder.notifyCloseListeners(PaneFolder.java:631)
	at org.eclipse.ui.internal.presentations.PaneFolder$3.close(PaneFolder.java:206)
	at org.eclipse.swt.custom.CTabFolder.onMouse(CTabFolder.java:1568)
	at org.eclipse.swt.custom.CTabFolder$1.handleEvent(CTabFolder.java:261)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1050)
	at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4037)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3628)
	at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2408)
	at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2372)
	at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2221)
	at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:501)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:494)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
	at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:115)
	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:369)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:79)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:618)
	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:619)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:574)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1406)

AND


org.eclipse.core.runtime.AssertionFailedException: unknown saveable: org.eclipse.team.ui.synchronize.SaveableCompareEditorInput$InternalResourceSaveableComparison@140e140e from part: org.eclipse.compare.internal.CompareEditor@48a248a2
at org.eclipse.ui.internal.SaveablesList.logWarning(SaveablesList.java:187)
at org.eclipse.ui.internal.SaveablesList.addModel(SaveablesList.java:117)
at org.eclipse.ui.internal.SaveablesList.addModels(SaveablesList.java:289)
at org.eclipse.ui.internal.SaveablesList.handleLifecycleEvent(SaveablesList.java:221)
at org.eclipse.compare.internal.CompareEditor.registerSaveable(CompareEditor.java:323)
at org.eclipse.compare.internal.CompareEditor.access$4(CompareEditor.java:321)
at org.eclipse.compare.internal.CompareEditor$3.run(CompareEditor.java:375)
at org.eclipse.ui.internal.UILockListener.doPendingWork(UILockListener.java:164)
at org.eclipse.ui.internal.UISynchronizer$3.run(UISynchronizer.java:158)
at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:134)
at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:4012)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3631)
at org.eclipse.jface.operation.ModalContext$ModalContextThread.block(ModalContext.java:173)
at org.eclipse.jface.operation.ModalContext.run(ModalContext.java:388)
at org.eclipse.jface.dialogs.ProgressMonitorDialog.run(ProgressMonitorDialog.java:507)
at org.eclipse.ui.internal.progress.ProgressMonitorJobsDialog.run(ProgressMonitorJobsDialog.java:275)
at org.eclipse.ui.internal.progress.ProgressManager$5.run(ProgressManager.java:960)
at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
at org.eclipse.ui.internal.progress.ProgressManager.busyCursorWhile(ProgressManager.java:995)
at org.eclipse.ui.internal.progress.ProgressManager.busyCursorWhile(ProgressManager.java:970)
at org.eclipse.ui.internal.progress.ProgressManager.run(ProgressManager.java:1166)
at org.eclipse.compare.internal.CompareContainer.run(CompareContainer.java:80)
at org.eclipse.compare.CompareEditorInput.run(CompareEditorInput.java:1233)
at org.eclipse.compare.internal.merge.DocumentMerger.doDiff(DocumentMerger.java:435)
at org.eclipse.compare.contentmergeviewer.TextMergeViewer.doDiff(TextMergeViewer.java:3277)
at org.eclipse.compare.contentmergeviewer.TextMergeViewer.update(TextMergeViewer.java:5001)
at org.eclipse.compare.contentmergeviewer.TextMergeViewer.updateContent(TextMergeViewer.java:2849)
at org.eclipse.compare.contentmergeviewer.ContentMergeViewer.internalRefresh(ContentMergeViewer.java:783)
at org.eclipse.compare.contentmergeviewer.ContentMergeViewer.inputChanged(ContentMergeViewer.java:683)
at org.eclipse.jface.viewers.ContentViewer.setInput(ContentViewer.java:274)
at org.eclipse.jdt.internal.ui.compare.JavaMergeViewer.setInput(JavaMergeViewer.java:158)
at org.eclipse.compare.CompareViewerSwitchingPane.setInput(CompareViewerSwitchingPane.java:276)
at org.eclipse.compare.internal.CompareContentViewerSwitchingPane.setInput(CompareContentViewerSwitchingPane.java:132)
at org.eclipse.compare.CompareEditorInput.internalSetContentPaneInput(CompareEditorInput.java:843)
at org.eclipse.compare.CompareEditorInput.access$8(CompareEditorInput.java:841)
at org.eclipse.compare.CompareEditorInput$11.run(CompareEditorInput.java:777)
at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
at org.eclipse.compare.CompareEditorInput.feed1(CompareEditorInput.java:771)
at org.eclipse.compare.CompareEditorInput.feedInput(CompareEditorInput.java:749)
at org.eclipse.compare.CompareEditorInput.createContents(CompareEditorInput.java:553)
at org.eclipse.compare.internal.CompareEditor.createCompareControl(CompareEditor.java:456)
at org.eclipse.compare.internal.CompareEditor.access$6(CompareEditor.java:422)
at org.eclipse.compare.internal.CompareEditor$4.run(CompareEditor.java:484)
at org.eclipse.swt.widgets.Display.runTimer(Display.java:4138)
at org.eclipse.swt.widgets.Display.messageProc(Display.java:3244)
at org.eclipse.swt.internal.win32.OS.DispatchMessageW(Native Method)
at org.eclipse.swt.internal.win32.OS.DispatchMessage(OS.java:2456)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3626)
at org.eclipse.jface.operation.ModalContext$ModalContextThread.block(ModalContext.java:173)
at org.eclipse.jface.operation.ModalContext.run(ModalContext.java:388)
at org.eclipse.jface.dialogs.ProgressMonitorDialog.run(ProgressMonitorDialog.java:507)
at org.eclipse.ui.internal.progress.ProgressMonitorJobsDialog.run(ProgressMonitorJobsDialog.java:275)
at org.eclipse.ui.internal.progress.ProgressManager$5.run(ProgressManager.java:960)
at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
at org.eclipse.ui.internal.progress.ProgressManager.busyCursorWhile(ProgressManager.java:995)
at org.eclipse.ui.internal.progress.ProgressManager.busyCursorWhile(ProgressManager.java:970)
at org.eclipse.ui.internal.progress.ProgressManager.run(ProgressManager.java:1166)
at org.eclipse.team.internal.ui.synchronize.actions.OpenInCompareAction.isOkToOpen(OpenInCompareAction.java:136)
at org.eclipse.team.internal.ui.synchronize.actions.OpenInCompareAction.openCompareEditor(OpenInCompareAction.java:115)
at org.eclipse.team.internal.ui.synchronize.actions.OpenInCompareAction.run(OpenInCompareAction.java:68)
at org.eclipse.team.ui.synchronize.ModelSynchronizeParticipantActionGroup$1.run(ModelSynchronizeParticipantActionGroup.java:103)
at org.eclipse.team.internal.ui.synchronize.StructuredViewerAdvisor.handleOpen(StructuredViewerAdvisor.java:171)
at org.eclipse.team.internal.ui.synchronize.StructuredViewerAdvisor.access$0(StructuredViewerAdvisor.java:167)
at org.eclipse.team.internal.ui.synchronize.StructuredViewerAdvisor$3.open(StructuredViewerAdvisor.java:131)
at org.eclipse.jface.viewers.StructuredViewer$2.run(StructuredViewer.java:842)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:49)
at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:175)
at org.eclipse.jface.viewers.StructuredViewer.fireOpen(StructuredViewer.java:840)
at org.eclipse.team.internal.ui.mapping.CommonViewerAdvisor$NavigableCommonViewer.openSelection(CommonViewerAdvisor.java:57)
at org.eclipse.team.internal.ui.synchronize.AbstractTreeViewerAdvisor.setSelection(AbstractTreeViewerAdvisor.java:255)
at org.eclipse.team.internal.ui.synchronize.AbstractTreeViewerAdvisor.navigate(AbstractTreeViewerAdvisor.java:281)
at org.eclipse.team.internal.ui.synchronize.AbstractTreeViewerAdvisor$1.selectChange(AbstractTreeViewerAdvisor.java:377)
at org.eclipse.compare.CompareNavigator.selectChange(CompareNavigator.java:39)
at org.eclipse.team.internal.ui.synchronize.AbstractTreeViewerAdvisor$TreeCompareNavigator.selectChange(AbstractTreeViewerAdvisor.java:62)
at org.eclipse.team.internal.ui.synchronize.actions.NavigateAction.run(NavigateAction.java:55)
at org.eclipse.jface.action.Action.runWithEvent(Action.java:498)
at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:584)
at org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:501)
at org.eclipse.jface.action.ActionContributionItem$6.handleEvent(ActionContributionItem.java:452)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1050)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4037)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3628)
at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2408)
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2372)
at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2221)
at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:501)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:494)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:115)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:369)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:79)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:618)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:619)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:574)
at org.eclipse.equinox.launcher.Main.run(Main.java:1406)
Comment 1 Markus Keller CLA 2010-03-09 04:25:57 EST
The first stacktrace looks like you closed an editor manually (by clicking the close box). The second could be a consequence of the NPE.
Comment 2 Deepak Azad CLA 2010-03-09 05:31:23 EST
(In reply to comment #1)
> The first stacktrace looks like you closed an editor manually (by clicking the
> close box). The second could be a consequence of the NPE.

Ah yes, you are right, the first stacktrace happens after I close the editor. However the second stacktrace happens while the editor is opened.

So essentially the second stacktrace happens before the first stacktrace :)
Comment 3 Markus Keller CLA 2010-03-09 11:50:40 EST
As Dani said in bug 300157 comment 17, the "unknown saveable" AFE is bug 272953.
If you can reproduce bug 272953, please add steps there.

The NPE is bug 273907. Can you reproduce that without running into bug 272953 first?
Comment 4 Deepak Azad CLA 2010-03-12 02:53:12 EST
(In reply to comment #3)
> As Dani said in bug 300157 comment 17, the "unknown saveable" AFE is bug #
> 272953.
> If you can reproduce bug 272953, please add steps there.
> 
> The NPE is bug 273907. Can you reproduce that without running into bug 272953
> first?

Nope, I cannot reproduce Bug 273907 without running into bug 272953 first. Closing this as a duplicate of 272953.

*** This bug has been marked as a duplicate of bug 272953 ***