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

Bug 561427

Summary: Some debugging configurations periodically bring up an internal error panel.
Product: [Eclipse Project] JDT Reporter: Rob Hatcherson <rob.hatcherson>
Component: DebugAssignee: JDT-Debug-Inbox <jdt-debug-inbox>
Status: CLOSED DUPLICATE QA Contact:
Severity: normal    
Priority: P3 CC: loskutov
Version: 4.15   
Target Milestone: ---   
Hardware: PC   
OS: Linux   
Whiteboard:
Attachments:
Description Flags
The annoying error panel mentioned in the bug report. none

Description Rob Hatcherson CLA 2020-03-24 16:10:31 EDT
Created attachment 282212 [details]
The annoying error panel mentioned in the bug report.

FWIW I originally reported this on the forums:
https://www.eclipse.org/forums/index.php/t/1102983/


Platform:

CentOS 7 - 3.10.0-1062.9.1.el7.x86_64


Session Data:

eclipse.buildId=4.15.0.I20200305-0155
java.version=1.8.0_232
java.vendor=Oracle Corporation
BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=en_US
Framework arguments:  -product org.eclipse.epp.package.rcp.product -showlocation main
Command-line arguments:  -os linux -ws gtk -arch x86_64 -product org.eclipse.epp.package.rcp.product -clean -showlocation main -data workspace.cba.202003


Observed Behavior:

On 03/23/2020 I updated 2019-12 to 2020-03. After doing so, now when I'm attached to certain debug configurations I get an internal error panel (or series of panels in quick succession) on what I've measured at about five minute intervals. A screenshot of the panel is attached. The particular debug configuration happens to be a remote configuration to a VM that includes threads that come and go relatively frequently, which results in the thread tree view in the Debug tab being updated. I only bring this up because the backtrace from the Error view says that this is a SWT error related to removing items from a tree. However, the thread activity far outpaces the periodic appearance of these panels, so this may be a coincidence.

At this point I've upgraded two machines, and both of them exhibit this behavior when run against the same debug configuration.

It's possible that this was happening in 2019-12, but I don't think so because this panel is pretty annoying and I would have noticed.

Unfortunately it's difficult to come up with steps to reproduce this. The problem happens if I'm just sitting here staring at the IDE and otherwise doing nothing. The local development situation is large and complex, so there's nothing I can hand over. The first thing I'd try to reproduce this on a smaller scale would be to cook up a test app that causes a bunch of thread activity, set up a remote debug configuration for it, then run, attach, and sit back and see what happens.

The backtrace from the Event view says:

java.lang.IllegalArgumentException: Index out of bounds
	at org.eclipse.swt.SWT.error(SWT.java:4704)
	at org.eclipse.swt.SWT.error(SWT.java:4638)
	at org.eclipse.swt.SWT.error(SWT.java:4609)
	at org.eclipse.swt.widgets.Widget.error(Widget.java:550)
	at org.eclipse.swt.widgets.TreeItem.getItem(TreeItem.java:792)
	at org.eclipse.jface.viewers.TreeViewer.lambda$4(TreeViewer.java:829)
	at org.eclipse.jface.viewers.StructuredViewer.preservingSelection(StructuredViewer.java:1397)
	at org.eclipse.jface.viewers.TreeViewer.preservingSelection(TreeViewer.java:363)
	at org.eclipse.jface.viewers.StructuredViewer.preservingSelection(StructuredViewer.java:1358)
	at org.eclipse.jface.viewers.TreeViewer.remove(TreeViewer.java:810)
	at org.eclipse.debug.internal.ui.viewers.model.TreeModelContentProvider.handleRemove(TreeModelContentProvider.java:1546)
	at org.eclipse.debug.internal.ui.viewers.model.TreeModelContentProvider.updateNodes(TreeModelContentProvider.java:1266)
	at org.eclipse.debug.internal.ui.viewers.model.TreeModelContentProvider.updateNodes(TreeModelContentProvider.java:1299)
	at org.eclipse.debug.internal.ui.viewers.model.TreeModelContentProvider.updateNodes(TreeModelContentProvider.java:1299)
	at org.eclipse.debug.internal.ui.viewers.model.TreeModelContentProvider.updateNodes(TreeModelContentProvider.java:1299)
	at org.eclipse.debug.internal.ui.viewers.model.TreeModelContentProvider.updateModel(TreeModelContentProvider.java:562)
	at org.eclipse.debug.internal.ui.viewers.model.TreeModelContentProvider.doModelChanged(TreeModelContentProvider.java:530)
	at org.eclipse.debug.internal.ui.viewers.model.TreeModelContentProvider.access$0(TreeModelContentProvider.java:524)
	at org.eclipse.debug.internal.ui.viewers.model.TreeModelContentProvider$DelayedDoModelChangedJob.runInUIThread(TreeModelContentProvider.java:436)
	at org.eclipse.ui.progress.UIJob.lambda$0(UIJob.java:95)
	at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:40)
	at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:185)
	at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:4930)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:4451)
	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)
	at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:150)
	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:203)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:137)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:107)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:401)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:255)
	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:657)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:594)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1447)
	at org.eclipse.equinox.launcher.Main.main(Main.java:1420)
Comment 1 Andrey Loskutov CLA 2020-03-24 16:13:45 EDT
A test case would be really cool.
Bug 561338 provides a workaround and the latest 4.16 nightly build a partial fix.

*** This bug has been marked as a duplicate of bug 561338 ***