Bug 323267 - [breakpoints][cdi] Filter properties not available accessible in Breakpoint Properties Dialog
Summary: [breakpoints][cdi] Filter properties not available accessible in Breakpoint P...
Status: NEW
Alias: None
Product: CDT
Classification: Tools
Component: cdt-debug-dsf (show other bugs)
Version: 7.0   Edit
Hardware: PC Linux
: P3 normal (vote)
Target Milestone: ---   Edit
Assignee: Project Inbox CLA
QA Contact: Jonah Graham CLA
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2010-08-20 11:59 EDT by John Dallaway CLA
Modified: 2020-09-04 15:21 EDT (History)
1 user (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description John Dallaway CLA 2010-08-20 11:59:43 EDT
Build Identifier: 3.6.0 I20100608-0911 with latest CDT from cdt_7_0 branch

This is a CDI-DSF parity bug.

When debugging using DSF, it is not possible to set up filtering by thread. The relevant part of the Breakpoint properties dialog is not populated and an error message box is presented: "The currently displayed page contains invalid values."

It is not clear to me whether this is a DSF core issue or a DSF-GDB issue.

Reproducible: Always

Steps to Reproduce:
1. Launch a multi-threaded "C/C++ Application" debugging session using the "GDB (DSF) Remote System Process" Launcher (and possibly other DSF launchers)

2. Create a breakpoint.

3. Right-click on the breakpoint in the Breakpoints View and select the "Breakpoint Properties..." context menu item.

4. Click on the "Filtering" item in the "Breakpoint Properties" dialog and observe the following:

  a) Error message box: "The currently displayed page contains invalid values."

  b) Nothing presented in the "Filtering page"
Comment 1 Marc Khouzam CLA 2010-08-20 13:03:57 EDT
Do you have the same problem with HEAD?

I wasn't able to reproduce it, even with 7_0
Comment 2 John Dallaway CLA 2010-08-23 05:57:12 EDT
Marc

It seems that breakpoint state can get confused, leading to the reported error. The state then remains confused across multiple launches and until Eclipse is re-started. I have not yet tracked down the precise sequence which triggers this issue but I can hit it fairly quickly when I start filtering breakpoints by thread.

There is an error reported when manipulating the filter list while the application under debug is running which may or may not be related to this issue:

!ENTRY org.eclipse.cdt.dsf 4 10004 2010-08-23 10:33:25.831
!MESSAGE Invalid breakpoint parameter(s)
!SUBENTRY 1 org.eclipse.cdt.dsf.gdb 4 10004 2010-08-23 10:33:25.832
!MESSAGE Invalid breakpoint parameter(s)

When the issue has been triggered, I get an NPE when I attempt to manipulate the breakpoint properties (cdt_7_0 branch):

!ENTRY org.eclipse.jface 4 2 2010-08-23 10:34:41.738
!MESSAGE Problems occurred when invoking code from plug-in: "org.eclipse.jface".
!STACK 0
java.lang.NullPointerException
	at java.util.Arrays$ArrayList.<init>(Arrays.java:3357)
	at java.util.Arrays.asList(Arrays.java:3343)
	at org.eclipse.cdt.dsf.gdb.internal.ui.breakpoints.GdbThreadFilterEditor$ThreadFilterContentProvider.getChildren(GdbThreadFilterEditor.java:154)
	at org.eclipse.cdt.dsf.gdb.internal.ui.breakpoints.GdbThreadFilterEditor$ThreadFilterContentProvider.getElements(GdbThreadFilterEditor.java:192)
	at org.eclipse.jface.viewers.StructuredViewer.getRawChildren(StructuredViewer.java:989)
	at org.eclipse.jface.viewers.ColumnViewer.getRawChildren(ColumnViewer.java:703)
	at org.eclipse.jface.viewers.AbstractTreeViewer.getRawChildren(AbstractTreeViewer.java:1332)
	at org.eclipse.jface.viewers.TreeViewer.getRawChildren(TreeViewer.java:391)
	at org.eclipse.jface.viewers.StructuredViewer.getFilteredChildren(StructuredViewer.java:896)
	at org.eclipse.jface.viewers.AbstractTreeViewer.getSortedChildren(AbstractTreeViewer.java:601)
	at org.eclipse.jface.viewers.AbstractTreeViewer$1.run(AbstractTreeViewer.java:801)
	at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
	at org.eclipse.jface.viewers.AbstractTreeViewer.createChildren(AbstractTreeViewer.java:778)
	at org.eclipse.jface.viewers.TreeViewer.createChildren(TreeViewer.java:644)
	at org.eclipse.jface.viewers.AbstractTreeViewer.createChildren(AbstractTreeViewer.java:749)
	at org.eclipse.jface.viewers.AbstractTreeViewer.internalInitializeTree(AbstractTreeViewer.java:1492)
	at org.eclipse.jface.viewers.TreeViewer.internalInitializeTree(TreeViewer.java:833)
	at org.eclipse.jface.viewers.AbstractTreeViewer$5.run(AbstractTreeViewer.java:1476)
	at org.eclipse.jface.viewers.StructuredViewer.preservingSelection(StructuredViewer.java:1422)
	at org.eclipse.jface.viewers.TreeViewer.preservingSelection(TreeViewer.java:403)
	at org.eclipse.jface.viewers.StructuredViewer.preservingSelection(StructuredViewer.java:1383)
	at org.eclipse.jface.viewers.CheckboxTreeViewer.preservingSelection(CheckboxTreeViewer.java:416)
	at org.eclipse.jface.viewers.AbstractTreeViewer.inputChanged(AbstractTreeViewer.java:1469)
	at org.eclipse.jface.viewers.ContentViewer.setInput(ContentViewer.java:274)
	at org.eclipse.jface.viewers.StructuredViewer.setInput(StructuredViewer.java:1664)
	at org.eclipse.cdt.dsf.gdb.internal.ui.breakpoints.GdbThreadFilterEditor.createThreadViewer(GdbThreadFilterEditor.java:270)
	at org.eclipse.cdt.dsf.gdb.internal.ui.breakpoints.GdbThreadFilterEditor.<init>(GdbThreadFilterEditor.java:250)
	at org.eclipse.cdt.dsf.gdb.internal.ui.breakpoints.CBreakpointGdbThreadFilterPage.createThreadFilterEditor(CBreakpointGdbThreadFilterPage.java:62)
	at org.eclipse.cdt.dsf.gdb.internal.ui.breakpoints.CBreakpointGdbThreadFilterPage.createContents(CBreakpointGdbThreadFilterPage.java:38)
	at org.eclipse.jface.preference.PreferencePage.createControl(PreferencePage.java:232)
	at org.eclipse.jface.preference.PreferenceDialog.createPageControl(PreferenceDialog.java:1501)
	at org.eclipse.jface.preference.PreferenceDialog$14.run(PreferenceDialog.java:1258)
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
	at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:49)
	at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:175)
	at org.eclipse.jface.preference.PreferenceDialog.showPage(PreferenceDialog.java:1252)
	at org.eclipse.ui.internal.dialogs.FilteredPreferenceDialog.showPage(FilteredPreferenceDialog.java:673)
	at org.eclipse.jface.preference.PreferenceDialog$10.run(PreferenceDialog.java:708)
	at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
	at org.eclipse.jface.preference.PreferenceDialog$9.selectionChanged(PreferenceDialog.java:704)
	at org.eclipse.jface.viewers.StructuredViewer$3.run(StructuredViewer.java:867)
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
	at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:49)
	at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:175)
	at org.eclipse.jface.viewers.StructuredViewer.firePostSelectionChanged(StructuredViewer.java:865)
	at org.eclipse.jface.viewers.StructuredViewer.setSelection(StructuredViewer.java:1700)
	at org.eclipse.jface.viewers.TreeViewer.setSelection(TreeViewer.java:1139)
	at org.eclipse.jface.preference.PreferenceDialog.selectSavedItem(PreferenceDialog.java:1054)
	at org.eclipse.ui.internal.dialogs.FilteredPreferenceDialog.selectSavedItem(FilteredPreferenceDialog.java:728)
	at org.eclipse.jface.preference.PreferenceDialog$4.run(PreferenceDialog.java:375)
	at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
	at org.eclipse.jface.preference.PreferenceDialog.createContents(PreferenceDialog.java:371)
	at org.eclipse.jface.window.Window.create(Window.java:431)
	at org.eclipse.jface.dialogs.Dialog.create(Dialog.java:1089)
	at org.eclipse.ui.internal.dialogs.PropertyDialog.createDialogOn(PropertyDialog.java:82)
	at org.eclipse.ui.dialogs.PropertyDialogAction.createDialog(PropertyDialogAction.java:176)
	at org.eclipse.ui.dialogs.PropertyDialogAction.run(PropertyDialogAction.java:155)
	at org.eclipse.cdt.debug.internal.ui.actions.CBreakpointPropertiesHandler.execute(CBreakpointPropertiesHandler.java:70)
	at org.eclipse.ui.internal.handlers.HandlerProxy.execute(HandlerProxy.java:293)
	at org.eclipse.core.commands.Command.executeWithChecks(Command.java:476)
	at org.eclipse.core.commands.ParameterizedCommand.executeWithChecks(ParameterizedCommand.java:508)
	at org.eclipse.ui.internal.handlers.HandlerService.executeCommand(HandlerService.java:169)
	at org.eclipse.ui.internal.handlers.SlaveHandlerService.executeCommand(SlaveHandlerService.java:241)
	at org.eclipse.ui.internal.handlers.SlaveHandlerService.executeCommand(SlaveHandlerService.java:241)
	at org.eclipse.ui.menus.CommandContributionItem.handleWidgetSelection(CommandContributionItem.java:820)
	at org.eclipse.ui.menus.CommandContributionItem.access$19(CommandContributionItem.java:806)
	at org.eclipse.ui.menus.CommandContributionItem$5.handleEvent(CommandContributionItem.java:796)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1258)
	at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3552)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3171)
	at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2629)
	at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2593)
	at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2427)
	at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:670)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:663)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
	at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:115)
	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:369)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:619)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:574)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1407)
	at org.eclipse.equinox.launcher.Main.main(Main.java:1383)

With that I now know, I am not surprised that you cannot reproduce the reported issue immediately. I will keep looking for a reliable recipe to trigger the problem, but perhaps the stack trace will offer some clues. I have not yet reproduced this with sources from the CDT HEAD, but this may be because the projects in my run-time workspace for HEAD are trivial.