From 7dbe0de0fe24eca6864be6121c5d8158e75ddbe6 Mon Sep 17 00:00:00 2001 From: Marc Dumais Date: Mon, 6 Feb 2017 09:54:40 -0500 Subject: [PATCH] Bug 511727 - NPE in org.eclipse.cdt.tests.dsf.gdb.tests.AutomatedSuite Change-Id: I5f24d617e1577812ba86e44acf4228192f77ab7f --- .../eclipse/cdt/dsf/mi/service/MIBreakpointsManager.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/MIBreakpointsManager.java b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/MIBreakpointsManager.java index a8cdc0f8c51..91e06ae4465 100644 --- a/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/MIBreakpointsManager.java +++ b/dsf-gdb/org.eclipse.cdt.dsf.gdb/src/org/eclipse/cdt/dsf/mi/service/MIBreakpointsManager.java @@ -822,7 +822,12 @@ public class MIBreakpointsManager extends AbstractDsfService implements IBreakpo @Override protected void handleSuccess() { Map> platformBPs = fPlatformToAttributesMaps.get(dmc); - platformBPs.remove(breakpoint); + // Note: Protect against NPE. It looks like we just checked the "platformBPs" is not null, + // in doUninstallBreakpoint(), but there is a race condition that can make it null + // in the meantime, if the debug session is destroyed. See bug 511727 + if (platformBPs != null) { + platformBPs.remove(breakpoint); + } super.handleSuccess(); } });