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

Bug 539224

Summary: [tests] NPE logged from SWT during JDT debug tests
Product: [Eclipse Project] JDT Reporter: Simeon Andreev <simeon.danailov.andreev>
Component: DebugAssignee: JDT-Debug-Inbox <jdt-debug-inbox>
Status: RESOLVED WORKSFORME QA Contact:
Severity: normal    
Priority: P3 CC: loskutov, sarika.sinha
Version: 4.9   
Target Milestone: ---   
Hardware: PC   
OS: Linux   
See Also: https://bugs.eclipse.org/bugs/show_bug.cgi?id=526199
https://bugs.eclipse.org/bugs/show_bug.cgi?id=533367
https://git.eclipse.org/r/129669
https://git.eclipse.org/c/jdt/eclipse.jdt.debug.git/commit/?id=dcdd981305fff668d6f166170b6b6e06ffa3a032
https://bugs.eclipse.org/bugs/show_bug.cgi?id=561338
Whiteboard: stalebug
Attachments:
Description Flags
Logs from a green build with many occurrences of the NPE in SWT. none

Description Simeon Andreev CLA 2018-09-19 05:28:05 EDT
Created attachment 275883 [details]
Logs from a green build with many occurrences of the NPE in SWT.

Seen with current master or with:

Eclipse SDK
Version: 2018-12 (4.10)
Build id: I20180914-0620

NPE is logged as follows:

!ENTRY org.eclipse.ui 4 0 2018-06-22 10:06:05.834
!MESSAGE Unhandled event loop exception
!STACK 0
org.eclipse.core.runtime.AssertionFailedException: null argument:
	at org.eclipse.core.runtime.Assert.isNotNull(Assert.java:85)
	at org.eclipse.core.runtime.Assert.isNotNull(Assert.java:73)
	at org.eclipse.jface.viewers.AbstractTreeViewer.getTreePathFromItem(AbstractTreeViewer.java:2949)
	at org.eclipse.debug.internal.ui.viewers.model.InternalTreeModelViewer.getTreePathFromItem(InternalTreeModelViewer.java:1205)
	at org.eclipse.jface.viewers.TreeViewer.virtualLazyUpdateWidget(TreeViewer.java:982)
	at org.eclipse.jface.viewers.TreeViewer.lambda$1(TreeViewer.java:255)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:86)
	at org.eclipse.swt.widgets.Display.sendEvent(Display.java:5686)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1370)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1396)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1379)
	at org.eclipse.swt.widgets.Tree.checkData(Tree.java:337)
	at org.eclipse.swt.widgets.Tree.cellDataProc(Tree.java:260)
	at org.eclipse.swt.widgets.Display.cellDataProc(Display.java:865)
	at org.eclipse.swt.internal.gtk.GTK._gtk_tree_view_column_cell_set_cell_data(Native Method)
	at org.eclipse.swt.internal.gtk.GTK.gtk_tree_view_column_cell_set_cell_data(GTK.java:7813)
	at org.eclipse.swt.widgets.Tree.calculateWidth(Tree.java:415)
	at org.eclipse.swt.widgets.Tree.calculateWidth(Tree.java:463)
	at org.eclipse.swt.widgets.Tree.setScrollWidth(Tree.java:3753)
	at org.eclipse.swt.widgets.Tree.cellDataProc(Tree.java:319)
	at org.eclipse.swt.widgets.Display.cellDataProc(Display.java:865)
	at org.eclipse.swt.internal.gtk.GTK._gtk_tree_store_set(Native Method)
	at org.eclipse.swt.internal.gtk.GTK.gtk_tree_store_set(GTK.java:7657)
	at org.eclipse.swt.widgets.TreeItem.setText(TreeItem.java:1741)
	at org.eclipse.swt.widgets.TreeItem.setText(TreeItem.java:1749)
	at org.eclipse.jface.viewers.TreeViewer.disassociate(TreeViewer.java:1055)
	at org.eclipse.jface.viewers.AbstractTreeViewer.disassociateChildren(AbstractTreeViewer.java:867)
	at org.eclipse.jface.viewers.AbstractTreeViewer.disassociate(AbstractTreeViewer.java:852)
	at org.eclipse.jface.viewers.TreeViewer.disassociate(TreeViewer.java:1057)
	at org.eclipse.jface.viewers.TreeViewer.lambda$4(TreeViewer.java:815)
	at org.eclipse.jface.viewers.StructuredViewer.preservingSelection(StructuredViewer.java:1446)
	at org.eclipse.jface.viewers.TreeViewer.preservingSelection(TreeViewer.java:360)
	at org.eclipse.jface.viewers.StructuredViewer.preservingSelection(StructuredViewer.java:1407)
	at org.eclipse.jface.viewers.TreeViewer.remove(TreeViewer.java:807)
	at org.eclipse.debug.internal.ui.viewers.model.TreeModelContentProvider.handleRemove(TreeModelContentProvider.java:1554)
	at org.eclipse.debug.internal.ui.viewers.model.TreeModelContentProvider.updateNodes(TreeModelContentProvider.java:1274)
	at org.eclipse.debug.internal.ui.viewers.model.TreeModelContentProvider.updateNodes(TreeModelContentProvider.java:1307)
	at org.eclipse.debug.internal.ui.viewers.model.TreeModelContentProvider.updateModel(TreeModelContentProvider.java:559)
	at org.eclipse.debug.internal.ui.viewers.model.TreeModelContentProvider.doModelChanged(TreeModelContentProvider.java:527)
	at org.eclipse.debug.internal.ui.viewers.model.TreeModelContentProvider.access$0(TreeModelContentProvider.java:521)
	at org.eclipse.debug.internal.ui.viewers.model.TreeModelContentProvider$DelayedDoModelChangedJob.runInUIThread(TreeModelContentProvider.java:433)
	at org.eclipse.ui.progress.UIJob.lambda$0(UIJob.java:95)
	at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:37)
	at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:182)
	at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:4915)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:4521)
	at org.eclipse.jdt.debug.tests.DebugSuite.run(DebugSuite.java:71)
	at org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:86)
	at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:367)
	at org.apache.maven.surefire.junit4.JUnit4Provider.executeWithRerun(JUnit4Provider.java:274)
	at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:238)
	at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:161)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray2(ReflectionUtils.java:202)
	at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:155)
	at org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:81)
	at org.eclipse.tycho.surefire.osgibooter.OsgiSurefireBooter.run(OsgiSurefireBooter.java:107)
	at org.eclipse.tycho.surefire.osgibooter.AbstractUITestApplication$1.run(AbstractUITestApplication.java:35)
	at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:37)
	at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:182)
	at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:4915)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:4521)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1170)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:336)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1059)
	at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:153)
	at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:625)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:336)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:560)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:148)
	at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:152)
	at org.eclipse.tycho.surefire.osgibooter.UITestApplication.runApplication(UITestApplication.java:31)
	at org.eclipse.tycho.surefire.osgibooter.AbstractUITestApplication.run(AbstractUITestApplication.java:120)
	at org.eclipse.tycho.surefire.osgibooter.UITestApplication.start(UITestApplication.java:37)
	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:134)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:388)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:243)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:656)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:592)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1498)
	at org.eclipse.equinox.launcher.Main.main(Main.java:1471)
Comment 1 Sarika Sinha CLA 2018-09-19 05:42:54 EDT
Is it happening on all OS or only on gtk?
Comment 2 Eclipse Genie CLA 2018-09-19 05:53:18 EDT
New Gerrit change created: https://git.eclipse.org/r/129669
Comment 3 Simeon Andreev CLA 2018-09-19 06:48:45 EDT
(In reply to Sarika Sinha from comment #1)
> Is it happening on all OS or only on gtk?

I don't see it when I run the tests on Windows 10. So I assume this is GTK3 only.
Comment 4 Simeon Andreev CLA 2018-09-19 09:19:54 EDT
Looks like a timing issue, I'm trying to understand the deltas which are sent during a mini-example that shows the problem:

1. org.eclipse.jdt.debug.tests.ui.DebugViewTests.testWrongSelectionBug538303()
2. org.eclipse.jdt.debug.tests.launching.LongClassPathTests.testVeryLongClasspathWithClasspathOnlyJar()

Then the NPE occurs, the test itself is in tearDown(), removing launches (to avoid muddling the Debug View for the upcoming tests):

        at org.eclipse.jdt.debug.tests.TestUtil.runEventLoop(TestUtil.java:100)
        at org.eclipse.jdt.debug.tests.TestUtil.cleanUp(TestUtil.java:69)
        at org.eclipse.jdt.debug.tests.AbstractDebugTest.tearDown(AbstractDebugTest.java:2578)
        at org.eclipse.jdt.debug.tests.launching.LongClassPathTests.tearDown(LongClassPathTests.java:94)

So far I have tried different types of waiting for jobs / processing UI events to no avail.
Comment 6 Eclipse Genie CLA 2022-03-13 01:52:23 EST
This bug hasn't had any activity in quite some time. Maybe the problem got resolved, was a duplicate of something else, or became less pressing for some reason - or maybe it's still relevant but just hasn't been looked at yet.

If you have further information on the current state of the bug, please add it. The information can be, for example, that the problem still occurs, that you still want the feature, that more information is needed, or that the bug is (for whatever reason) no longer relevant.

--
The automated Eclipse Genie.
Comment 7 Sarika Sinha CLA 2022-03-14 10:24:43 EDT
@Simeon,
Do you still get these NPEs?
Comment 8 Simeon Andreev CLA 2022-03-14 10:42:39 EDT
(In reply to Sarika Sinha from comment #7)
> @Simeon,
> Do you still get these NPEs?

I ran DebugViewTests locally a few times, I don't see logged NPEs. I assume this bug can be closed.