NullPointerException in org.eclipse.swt.widgets.Menu.wmTimer(Menu.java:1305) after migration to Eclipse 4.15
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.
4.15 is out of support for long time. Do you reproduce the problem with 4.37 ?