Community
Participate
Working Groups
we see this npe in our xtext-eclipse test with 4.21 target !ENTRY org.eclipse.ui 4 0 2021-07-16 08:21:18.043 !MESSAGE Unhandled event loop exception !STACK 0 java.lang.NullPointerException at org.eclipse.swt.custom.StyledText.handlePaint(StyledText.java:6410) at org.eclipse.swt.custom.StyledText.lambda$28(StyledText.java:5923) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:89) at org.eclipse.swt.widgets.Display.sendEvent(Display.java:5899) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1443) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1469) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1452) at org.eclipse.swt.widgets.Control.gtk_draw(Control.java:3910) at org.eclipse.swt.widgets.Scrollable.gtk_draw(Scrollable.java:365) at org.eclipse.swt.widgets.Composite.gtk_draw(Composite.java:500) at org.eclipse.swt.widgets.Canvas.gtk_draw(Canvas.java:181) at org.eclipse.swt.widgets.Widget.windowProc(Widget.java:2301) at org.eclipse.swt.widgets.Control.windowProc(Control.java:6781) at org.eclipse.swt.widgets.Display.windowProc(Display.java:6153) at org.eclipse.swt.internal.gtk3.GTK3.gtk_main_do_event(Native Method) at org.eclipse.swt.widgets.Display.eventProc(Display.java:1562) at org.eclipse.swt.internal.gtk3.GTK3.gtk_main_iteration_do(Native Method) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:4596) at org.eclipse.ui.internal.dialogs.EventLoopProgressMonitor.runEventLoop(EventLoopProgressMonitor.java:126) at org.eclipse.ui.internal.dialogs.EventLoopProgressMonitor.isCanceled(EventLoopProgressMonitor.java:100) at org.eclipse.core.runtime.SubMonitor$RootInfo.isCanceled(SubMonitor.java:235) at org.eclipse.core.runtime.SubMonitor.isCanceled(SubMonitor.java:581) at org.eclipse.core.internal.jobs.ThreadJob.isCanceled(ThreadJob.java:147) at org.eclipse.core.internal.jobs.ThreadJob.waitForRun(ThreadJob.java:276) at org.eclipse.core.internal.jobs.ThreadJob.joinRun(ThreadJob.java:205) at org.eclipse.core.internal.jobs.ImplicitJobs.begin(ImplicitJobs.java:95) at org.eclipse.core.internal.jobs.JobManager.beginRule(JobManager.java:299) at org.eclipse.core.internal.resources.WorkManager.checkIn(WorkManager.java:124) at org.eclipse.core.internal.resources.Workspace.prepareOperation(Workspace.java:2263) at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2308) at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:2338) at org.eclipse.ui.actions.WorkspaceModifyOperation.run(WorkspaceModifyOperation.java:131) at org.eclipse.xtext.ui.testing.util.IResourcesSetupUtil.createFile(IResourcesSetupUtil.java:247) at org.eclipse.xtext.ui.testing.util.IResourcesSetupUtil.createFile(IResourcesSetupUtil.java:225) at org.eclipse.xtext.ui.tests.editor.encoding.EncodingTest.testFileEncodingIsUsedInEMFResource(EncodingTest.java:42)
looking at org.eclipse.swt.custom.StyledText.setCaret(Caret) null seems to be a legit value for caret.
e.g. as called from org.eclipse.ui.texteditor.AbstractTextEditor.updateCaret()
This is another regression from bug 562676. @Mickael: please check.
swt version used: /org.eclipse.swt.gtk.linux.x86_64_3.117.0.v20210715-1557.jar
New Gerrit change created: https://git.eclipse.org/r/c/platform/eclipse.platform.swt/+/183122
Gerrit change https://git.eclipse.org/r/c/platform/eclipse.platform.swt/+/183122 was merged to [master]. Commit: http://git.eclipse.org/c/platform/eclipse.platform.swt.git/commit/?id=5c08380d1ae441418c997ea54ee5ddc044c10748
I have concerns about the merged patch as I'm not certain the implementation does respect the initial contract of setCaret(null): if I'm not mistaken, setCaret(null) is expected to reset to default system caret, while current implementation would remove all carets. Note that it's just a 1st impression, I'll have adeeper look to verify this assption and update patch if needed.
stacktrace where caret is nulled in our test StyledText.setCaret(Caret) line: 8831 XtextEditor(AbstractTextEditor).updateCaret() line: 6556 XtextEditor(AbstractTextEditor).handleInsertModeChanged() line: 6595 XtextEditor(AbstractTextEditor).initializeSourceViewer(IEditorInput) line: 4004 XtextEditor(AbstractTextEditor).createPartControl(Composite) line: 3477 XtextEditor(StatusTextEditor).createPartControl(Composite) line: 64 XtextEditor(AbstractDecoratedTextEditor).createPartControl(Composite) line: 454 XtextEditor.createPartControl(Composite) line: 538 CompatibilityEditor(CompatibilityPart).createPartControl(IWorkbenchPart, Composite) line: 158
(In reply to Mickael Istria from comment #7) > I have concerns about the merged patch as I'm not certain the implementation > does respect the initial contract of setCaret(null): if I'm not mistaken, > setCaret(null) is expected to reset to default system caret, while current > implementation would remove all carets. > Note that it's just a 1st impression, I'll have adeeper look to verify this > assption and update patch if needed. My mistake, implementation seems correct. A null caret seems to imply no caret wod be drawn before multi selection/caret, and the suggested patch appears to keep this behavior, so it's all good. @Christian: please try an I-Build containing yhe patch and report whether you face further issue, and mark it as resolved/verified if you're happy with this fix.
no more NPEs in our tests