Project: Eclipse_Platform_UI
Bug 400829 [DND] NPE and hang during dragging
Reported: 2013-02-14 12:02:29 | Status: verified fixed

BuildId: I20130205-0800 (4.3M5) Attempting to drag a view into a separate stack, resulted in an app hang and partial global UI hang -- I could switch out using Ctrl-Tab into a terminal window where I was able to kill Eclipse and recover the UI. This has happened to me on a few previous occasions, but it's not an everyday occurrence. !ENTRY org.eclipse.ui 4 0 2013-02-14 11:50:51.869 !MESSAGE Unhandled event loop exception !STACK 0 java.lang.NullPointerException at org.eclipse.e4.ui.workbench.addons.dndaddon.SplitFeedbackOverlay.defineRegion(SplitFeedbackOverlay.java:108) at org.eclipse.e4.ui.workbench.addons.dndaddon.SplitFeedbackOverlay.setFeedback(SplitFeedbackOverlay.java:138) at org.eclipse.e4.ui.workbench.addons.dndaddon.SplitDropAgent.track(SplitDropAgent.java:195) at org.eclipse.e4.ui.workbench.addons.dndaddon.DragAgent.track(DragAgent.java:112) at org.eclipse.e4.ui.workbench.addons.dndaddon.DnDManager$4.run(DnDManager.java:186) at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:180) at org.eclipse.ui.internal.UISynchronizer.syncExec(UISynchronizer.java:150) at org.eclipse.swt.widgets.Display.syncExec(Display.java:4454) at org.eclipse.e4.ui.workbench.addons.dndaddon.DnDManager.track(DnDManager.java:183) at org.eclipse.e4.ui.workbench.addons.dndaddon.DnDManager.access$1(DnDManager.java:182) at org.eclipse.e4.ui.workbench.addons.dndaddon.DnDManager$6.handleEvent(DnDManager.java:218) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1392) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1416) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1401) at org.eclipse.swt.widgets.Tracker.gtk_mouse(Tracker.java:623) at org.eclipse.swt.widgets.Tracker.gtk_motion_notify_event(Tracker.java:552) at org.eclipse.swt.widgets.Tracker.processEvent(Tracker.java:807) at org.eclipse.swt.widgets.Display.eventProc(Display.java:1239) at org.eclipse.swt.internal.gtk.OS._g_main_context_iteration(Native Method) at org.eclipse.swt.internal.gtk.OS.g_main_context_iteration(OS.java:2281) at org.eclipse.swt.widgets.Shell.setVisible(Shell.java:2153) at org.eclipse.e4.ui.workbench.addons.dndaddon.SplitFeedbackOverlay.<init>(SplitFeedbackOverlay.java:51) at org.eclipse.e4.ui.workbench.addons.dndaddon.SplitDropAgent.showFeedback(SplitDropAgent.java:284) at org.eclipse.e4.ui.workbench.addons.dndaddon.SplitDropAgent.track(SplitDropAgent.java:207) at org.eclipse.e4.ui.workbench.addons.dndaddon.DragAgent.track(DragAgent.java:112) at org.eclipse.e4.ui.workbench.addons.dndaddon.DnDManager$4.run(DnDManager.java:186) at org.eclipse.swt.widgets.Synchronizer.syncExec(Synchronizer.java:180) at org.eclipse.ui.internal.UISynchronizer.syncExec(UISynchronizer.java:150) at org.eclipse.swt.widgets.Display.syncExec(Display.java:4454) at org.eclipse.e4.ui.workbench.addons.dndaddon.DnDManager.track(DnDManager.java:183) at org.eclipse.e4.ui.workbench.addons.dndaddon.DnDManager.access$1(DnDManager.java:182) at org.eclipse.e4.ui.workbench.addons.dndaddon.DnDManager$6.handleEvent(DnDManager.java:218) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1392) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1416) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1401) at org.eclipse.swt.widgets.Tracker.gtk_mouse(Tracker.java:623) at org.eclipse.swt.widgets.Tracker.gtk_motion_notify_event(Tracker.java:552) at org.eclipse.swt.widgets.Tracker.processEvent(Tracker.java:807) at org.eclipse.swt.widgets.Display.eventProc(Display.java:1239) at org.eclipse.swt.internal.gtk.OS._g_main_context_iteration(Native Method) at org.eclipse.swt.internal.gtk.OS.g_main_context_iteration(OS.java:2281) at org.eclipse.swt.widgets.Tracker.open(Tracker.java:781) at org.eclipse.e4.ui.workbench.addons.dndaddon.DnDManager.startDrag(DnDManager.java:230) at org.eclipse.e4.ui.workbench.addons.dndaddon.DnDManager$1.dragDetected(DnDManager.java:88) at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:127) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1392) at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3705) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3326) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$9.run(PartRenderingEngine.java:1057) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:941) at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:79) at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:588) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:543) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149) at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:124) 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:354) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:181) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:616) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:636) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:591) at org.eclipse.equinox.launcher.Main.run(Main.java:1450) at org.eclipse.equinox.launcher.Main.main(Main.java:1426)

Files changed in fix:
bundles/org.eclipse.e4.ui.workbench.addons.swt/src/org/eclipse/e4/ui/workbench/addons/dndaddon/SplitDropAgent.java bundles/org.eclipse.e4.ui.workbench.addons.swt/src/org/eclipse/e4/ui/workbench/addons/dndaddon/SplitFeedbackOverlay.java