- 
                Notifications
    You must be signed in to change notification settings 
- Fork 185
Description
Summary
After migrating our RCP application from Eclipse 3.6 to Eclipse 4.15 (2020-03), we started seeing random
NullPointerException crashes in org.eclipse.swt.widgets.Menu.wmTimer(Menu.java:1305).
Stack trace
java.lang.NullPointerException: null
at org.eclipse.swt.widgets.Menu.wmTimer(Menu.java:1305) ~[?:?]
at org.eclipse.swt.widgets.Control.WM_TIMER(Control.java:5622) ~[?:?]
at org.eclipse.swt.widgets.Control.windowProc(Control.java:4802) ~[?:?]
at org.eclipse.swt.widgets.Canvas.windowProc(Canvas.java:335) ~[?:?]
at org.eclipse.swt.widgets.Decorations.windowProc(Decorations.java:1480) ~[?:?]
at org.eclipse.swt.widgets.Shell.windowProc(Shell.java:2100) ~[?:?]
at org.eclipse.swt.widgets.Display.windowProc(Display.java:4757) ~[?:?]
at org.eclipse.swt.internal.win32.OS.TrackPopupMenu(Native Method) ~[?:?]
at org.eclipse.swt.widgets.Menu._setVisible(Menu.java:237) ~[?:?]
at org.eclipse.swt.widgets.Display.runPopups(Display.java:3963) ~[?:?]
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3518) ~[?:?]
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1160) ~[?:?]
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338) ~[?:?]
at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1049) ~[?:?]
at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:155) ~[?:?]
at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:658) ~[?:?]
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:338) ~[?:?]
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:557) ~[?:?]
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:154) ~[?:?]
Environment
- Eclipse Platform: 4.15 (2020-03)
- SWT version: 3.114.0.v20200304-0601
- org.eclipse.core.runtime: 3.17.100.v20200203-0917
- OS: Windows 11 64-bit
- JVM: JDK11.0.15
Expected behavior
Menu.wmTimer() should safely exit if the menu or display has been disposed.