Skip to content

Removing breakpoint produces few errors in the log if Breakpoints view shows a tree #2150

@iloveeclipse

Description

@iloveeclipse

Seen in 4.38 latest nightly, however already present in 4.34, probably earlier.
I could not reproduce it in Eclipse 4.30, so it is a regression inbetween.

TL;DR: removing breakpoint if Breakpoints view shows a tree with breakpoint groups results in one or multiple errors reported to the error log.

  • The code can be anything, just a trivial "helloworld" example with a single main method.
  • Open Breakpoints view, enable "Group By" by anything except "Breakpoint", so a tree is shown with few breakpoints
  • Create and delete breakpoint few times by double clicking on left editor ruler
  • Errors are logged...

Typically there is at least a pair of errors like:

eclipse.buildId=4.38.0.I20250908-1800
java.version=21.0.8-9
java.vendor=N/A
BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=en_US
Command-line arguments:  -os linux -ws gtk -arch x86_64 -data file:/data/4x_platform_workspace/

org.eclipse.debug.ui
Error
Tue Sep 09 11:56:49 CEST 2025
Error logged from Debug UI: 

java.lang.NullPointerException: Input to viewer update should not be null
	at org.eclipse.debug.internal.ui.viewers.model.ViewerUpdateMonitor.<init>(ViewerUpdateMonitor.java:90)
	at org.eclipse.debug.internal.ui.viewers.model.ChildrenUpdate.<init>(ChildrenUpdate.java:45)
	at org.eclipse.debug.internal.ui.viewers.model.TreeModelContentProvider.doUpdateElement(TreeModelContentProvider.java:1187)
	at org.eclipse.debug.internal.ui.viewers.model.TreeModelContentProvider.updateElement(TreeModelContentProvider.java:1759)
	at org.eclipse.jface.viewers.TreeViewer.virtualLazyUpdateWidget(TreeViewer.java:1001)
	at org.eclipse.jface.viewers.TreeViewer.lambda$1(TreeViewer.java:260)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:91)
	at org.eclipse.swt.widgets.Display.sendEvent(Display.java:5884)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1656)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1682)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1665)
	at org.eclipse.swt.widgets.Tree.checkData(Tree.java:375)
	at org.eclipse.swt.widgets.Tree.cellDataProc(Tree.java:307)
	at org.eclipse.swt.widgets.Display.cellDataProc(Display.java:997)
	at org.eclipse.swt.internal.gtk.GTK.gtk_tree_view_column_cell_set_cell_data(Native Method)
	at org.eclipse.swt.widgets.Tree.calculateWidth(Tree.java:446)
	at org.eclipse.swt.widgets.Tree.calculateWidth(Tree.java:521)
	at org.eclipse.swt.widgets.Tree.setScrollWidth(Tree.java:3888)
	at org.eclipse.swt.widgets.Tree.cellDataProc(Tree.java:356)
	at org.eclipse.swt.widgets.Display.cellDataProc(Display.java:997)
	at org.eclipse.swt.internal.gtk.GTK.gtk_tree_store_clear(Native Method)
	at org.eclipse.swt.widgets.Tree.removeAll(Tree.java:2978)
	at org.eclipse.jface.viewers.TreeViewer.removeAll(TreeViewer.java:289)
	at org.eclipse.jface.viewers.AbstractTreeViewer.lambda$2(AbstractTreeViewer.java:1627)
	at org.eclipse.jface.viewers.StructuredViewer.preservingSelection(StructuredViewer.java:1391)
	at org.eclipse.jface.viewers.TreeViewer.preservingSelection(TreeViewer.java:367)
	at org.eclipse.jface.viewers.StructuredViewer.preservingSelection(StructuredViewer.java:1352)
	at org.eclipse.jface.viewers.AbstractTreeViewer.inputChanged(AbstractTreeViewer.java:1623)
	at org.eclipse.debug.internal.ui.viewers.model.InternalTreeModelViewer.inputChanged(InternalTreeModelViewer.java:486)
	at org.eclipse.jface.viewers.ContentViewer.setInput(ContentViewer.java:279)
	at org.eclipse.jface.viewers.StructuredViewer.setInput(StructuredViewer.java:1635)
	at org.eclipse.debug.internal.ui.views.breakpoints.BreakpointsView.setViewerInput(BreakpointsView.java:295)
	at org.eclipse.debug.internal.ui.views.breakpoints.BreakpointsView.viewerInputUpdateComplete(BreakpointsView.java:309)
	at org.eclipse.debug.internal.ui.views.variables.VariablesView.lambda$0(VariablesView.java:297)
	at org.eclipse.debug.internal.ui.viewers.model.provisional.ViewerInputService.lambda$1(ViewerInputService.java:54)
	at org.eclipse.debug.internal.ui.viewers.model.ViewerInputUpdate$1.runInUIThread(ViewerInputUpdate.java:75)
	at org.eclipse.ui.progress.UIJob.lambda$0(UIJob.java:148)
	at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:40)
	at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:132)
	at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:5074)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:4543)

followed by

eclipse.buildId=4.38.0.I20250908-1800
java.version=21.0.8-9
java.vendor=N/A
BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=en_US
Command-line arguments:  -os linux -ws gtk -arch x86_64 -data file:/data/4x_platform_workspace/

org.eclipse.ui
Error
Tue Sep 09 11:56:49 CEST 2025
Unhandled event loop exception

java.lang.NullPointerException: Cannot invoke "Object.equals(Object)" because the return value of "org.eclipse.debug.internal.ui.viewers.model.ChildrenUpdate.getViewerInput()" is null
	at org.eclipse.debug.internal.ui.viewers.model.ChildrenUpdate.doEquals(ChildrenUpdate.java:212)
	at org.eclipse.debug.internal.ui.viewers.model.ViewerUpdateMonitor.equals(ViewerUpdateMonitor.java:256)
	at java.base/java.util.LinkedList.remove(LinkedList.java:376)
	at org.eclipse.debug.internal.ui.viewers.model.TreeModelContentProvider.coalesce(TreeModelContentProvider.java:971)
	at org.eclipse.debug.internal.ui.viewers.model.TreeModelContentProvider.schedule(TreeModelContentProvider.java:955)
	at org.eclipse.debug.internal.ui.viewers.model.TreeModelContentProvider.doUpdateElement(TreeModelContentProvider.java:1188)
	at org.eclipse.debug.internal.ui.viewers.model.TreeModelContentProvider.updateElement(TreeModelContentProvider.java:1759)
	at org.eclipse.jface.viewers.TreeViewer.virtualLazyUpdateWidget(TreeViewer.java:1001)
	at org.eclipse.jface.viewers.TreeViewer.lambda$1(TreeViewer.java:260)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:91)
	at org.eclipse.swt.widgets.Display.sendEvent(Display.java:5884)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1656)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1682)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1665)
	at org.eclipse.swt.widgets.Tree.checkData(Tree.java:375)
	at org.eclipse.swt.widgets.Tree.cellDataProc(Tree.java:307)
	at org.eclipse.swt.widgets.Display.cellDataProc(Display.java:997)
	at org.eclipse.swt.internal.gtk.GTK.gtk_tree_view_column_cell_set_cell_data(Native Method)
	at org.eclipse.swt.widgets.Tree.calculateWidth(Tree.java:446)
	at org.eclipse.swt.widgets.Tree.calculateWidth(Tree.java:521)
	at org.eclipse.swt.widgets.Tree.setScrollWidth(Tree.java:3888)
	at org.eclipse.swt.widgets.Tree.cellDataProc(Tree.java:356)
	at org.eclipse.swt.widgets.Display.cellDataProc(Display.java:997)
	at org.eclipse.swt.internal.gtk.GTK.gtk_tree_store_clear(Native Method)
	at org.eclipse.swt.widgets.Tree.removeAll(Tree.java:2978)
	at org.eclipse.jface.viewers.TreeViewer.removeAll(TreeViewer.java:289)
	at org.eclipse.jface.viewers.AbstractTreeViewer.lambda$2(AbstractTreeViewer.java:1627)
	at org.eclipse.jface.viewers.StructuredViewer.preservingSelection(StructuredViewer.java:1391)
	at org.eclipse.jface.viewers.TreeViewer.preservingSelection(TreeViewer.java:367)
	at org.eclipse.jface.viewers.StructuredViewer.preservingSelection(StructuredViewer.java:1352)
	at org.eclipse.jface.viewers.AbstractTreeViewer.inputChanged(AbstractTreeViewer.java:1623)
	at org.eclipse.debug.internal.ui.viewers.model.InternalTreeModelViewer.inputChanged(InternalTreeModelViewer.java:486)
	at org.eclipse.jface.viewers.ContentViewer.setInput(ContentViewer.java:279)
	at org.eclipse.jface.viewers.StructuredViewer.setInput(StructuredViewer.java:1635)
	at org.eclipse.debug.internal.ui.views.breakpoints.BreakpointsView.setViewerInput(BreakpointsView.java:295)
	at org.eclipse.debug.internal.ui.views.breakpoints.BreakpointsView.viewerInputUpdateComplete(BreakpointsView.java:309)
	at org.eclipse.debug.internal.ui.views.variables.VariablesView.lambda$0(VariablesView.java:297)
	at org.eclipse.debug.internal.ui.viewers.model.provisional.ViewerInputService.lambda$1(ViewerInputService.java:54)
	at org.eclipse.debug.internal.ui.viewers.model.ViewerInputUpdate$1.runInUIThread(ViewerInputUpdate.java:75)
	at org.eclipse.ui.progress.UIJob.lambda$0(UIJob.java:148)
	at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:40)
	at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:132)
	at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:5074)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:4543)

Metadata

Metadata

Assignees

Labels

bugSomething isn't workingregressionRegression defect

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions