Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.

Bug 273907

Summary: [compare] NPE in JavaReconciler
Product: [Eclipse Project] JDT Reporter: Kevin Barnes <cocoakevin>
Component: TextAssignee: Tomasz Zarna <tomasz.zarna>
Status: RESOLVED INVALID QA Contact:
Severity: major    
Priority: P3 CC: daniel_megert, markus.kell.r
Version: 3.5   
Target Milestone: ---   
Hardware: PC   
OS: Mac OS X   
Whiteboard:

Description Kevin Barnes CLA 2009-04-27 12:31:43 EDT
I'm getting a lot of these when comparing code in the synchronize perspective today.



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:614)
at org.eclipse.jdt.internal.ui.javaeditor.JavaSourceViewer.unconfigure(JavaSourceViewer.java:357)
at org.eclipse.jface.text.source.SourceViewer.handleDispose(SourceViewer.java:667)
at org.eclipse.jface.text.source.projection.ProjectionViewer.handleDispose(ProjectionViewer.java:1362)
at org.eclipse.jdt.internal.ui.javaeditor.JavaSourceViewer.handleDispose(JavaSourceViewer.java:462)
at org.eclipse.jface.text.TextViewer$2.widgetDisposed(TextViewer.java:1788)
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.Display.sendEvent(Display.java:3490)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1247)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1270)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1255)
at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:1076)
at org.eclipse.swt.custom.StyledText.handleDispose(StyledText.java:5670)
at org.eclipse.swt.custom.StyledText$7.handleEvent(StyledText.java:5498)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
at org.eclipse.swt.widgets.Display.sendEvent(Display.java:3490)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1247)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1270)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1251)
at org.eclipse.swt.widgets.Widget.release(Widget.java:1105)
at org.eclipse.swt.widgets.Control.release(Control.java:2486)
at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:753)
at org.eclipse.swt.widgets.Canvas.releaseChildren(Canvas.java:257)
at org.eclipse.swt.widgets.Widget.release(Widget.java:1108)
at org.eclipse.swt.widgets.Control.release(Control.java:2486)
at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:753)
at org.eclipse.swt.widgets.Widget.release(Widget.java:1108)
at org.eclipse.swt.widgets.Control.release(Control.java:2486)
at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:753)
at org.eclipse.swt.widgets.Widget.release(Widget.java:1108)
at org.eclipse.swt.widgets.Control.release(Control.java:2486)
at org.eclipse.swt.widgets.Composite.releaseChildren(Composite.java:753)
at org.eclipse.swt.widgets.Widget.release(Widget.java:1108)
at org.eclipse.swt.widgets.Control.release(Control.java:2486)
at org.eclipse.swt.widgets.Widget.dispose(Widget.java:540)
at org.eclipse.compare.internal.CompareEditor.doSetInput(CompareEditor.java:277)
at org.eclipse.compare.internal.CompareEditor.setInput(CompareEditor.java:248)
at org.eclipse.compare.internal.CompareUIPlugin$1.run(CompareUIPlugin.java:508)
at org.eclipse.compare.internal.CompareUIPlugin.syncExec(CompareUIPlugin.java:1258)
at org.eclipse.compare.internal.CompareUIPlugin.internalOpenEditor(CompareUIPlugin.java:529)
at org.eclipse.compare.internal.CompareUIPlugin.openEditorInBackground(CompareUIPlugin.java:499)
at org.eclipse.compare.internal.CompareUIPlugin.openCompareEditor(CompareUIPlugin.java:488)
at org.eclipse.compare.CompareUI.reuseCompareEditor(CompareUI.java:199)
at org.eclipse.compare.CompareUI.reuseCompareEditor(CompareUI.java:180)
at org.eclipse.team.internal.ui.synchronize.actions.OpenInCompareAction.openCompareEditor(OpenInCompareAction.java:205)
at org.eclipse.team.internal.ui.synchronize.actions.OpenInCompareAction.openCompareEditor(OpenInCompareAction.java:169)
at org.eclipse.team.internal.ui.synchronize.actions.OpenInCompareAction.openCompareEditor(OpenInCompareAction.java:113)
at org.eclipse.team.internal.ui.synchronize.actions.OpenInCompareAction.run(OpenInCompareAction.java:65)
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.core.runtime.Platform.run(Platform.java:888)
at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:48)
at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:175)
at org.eclipse.jface.viewers.StructuredViewer.fireOpen(StructuredViewer.java:840)
at org.eclipse.jface.viewers.StructuredViewer.handleOpen(StructuredViewer.java:1101)
at org.eclipse.ui.navigator.CommonViewer.handleOpen(CommonViewer.java:467)
at org.eclipse.jface.viewers.StructuredViewer$6.handleOpen(StructuredViewer.java:1205)
at org.eclipse.jface.util.OpenStrategy.fireOpenEvent(OpenStrategy.java:264)
at org.eclipse.jface.util.OpenStrategy.access$2(OpenStrategy.java:258)
at org.eclipse.jface.util.OpenStrategy$1.handleEvent(OpenStrategy.java:298)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
at org.eclipse.swt.widgets.Display.sendEvent(Display.java:3490)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1247)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1270)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1255)
at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:1076)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3389)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3048)
at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2405)
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2369)
at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2221)
at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:500)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:493)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:113)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:194)
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:368)
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:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:559)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:514)
at org.eclipse.equinox.launcher.Main.run(Main.java:1287)
Comment 1 Dani Megert CLA 2009-04-27 12:44:14 EDT
Do you have steps?

Tomasz, can you take a look?
Comment 2 Kevin Barnes CLA 2009-04-27 12:46:15 EDT
Compare changes with HEAD, double click a changed file, double click another changed file. I think it happens every second time (or whenever the compare editor is already populated)
Comment 3 Tomasz Zarna CLA 2009-04-28 04:13:08 EDT
Kevin, what build did you use? Was it one between v20090426-2000 and I20090427-0800? v20090426-2000 is where Dani released JDT part of changes for a bug in Java Compare but I was late with mine and done it yesterday (I20090427-0800). Might this be the cause?
Comment 4 Dani Megert CLA 2009-04-28 04:50:06 EDT
Markus, please try whether you can reproduce.
Comment 5 Kevin Barnes CLA 2009-04-28 08:30:20 EDT
It was either v20090426-2000, or I20090427-0800. 
Comment 6 Tomasz Zarna CLA 2009-04-28 10:39:56 EDT
(In reply to comment #5)
> It was either v20090426-2000, or I20090427-0800. 

I see, given the time you filed the bug I think I can safely assume it's the first one. Moreover, I'm working on I20090427-1800 and I haven't noticed any NPEs (similar to yours ;) So, imo this is fixed in I-builds starting from I20090427-0800. 

Of course, if I'm wrong, feel free to reopen the bug... and give me a slap in the face ;)

Comment 7 Kevin Barnes CLA 2009-04-28 12:07:17 EDT
I can't reproduce it today. No face slapping necessary.
Comment 8 Markus Keller CLA 2009-04-28 12:13:53 EDT
I also had it once with I20090426-2000 (on WinXP), but have not seen it any more with I20090428-0100.