From 14f8cb4ec9718c34fd559449e06dbefcff413527 Mon Sep 17 00:00:00 2001 From: Teo Voinea <58236992+tevoinea@users.noreply.github.com> Date: Fri, 8 Sep 2023 18:36:55 +0000 Subject: [PATCH 1/2] Improve handling of unexpected breakpoints --- src/agent/coverage/src/record/windows.rs | 32 +++++++++++++----------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/src/agent/coverage/src/record/windows.rs b/src/agent/coverage/src/record/windows.rs index 076aa70d37..8eb0ea9da6 100644 --- a/src/agent/coverage/src/record/windows.rs +++ b/src/agent/coverage/src/record/windows.rs @@ -132,20 +132,24 @@ impl<'cache, 'data> WindowsRecorder<'cache, 'data> { return Ok(()); } - let breakpoint = self.breakpoints.remove(id); - - let Some(breakpoint) = breakpoint else { - let stack = dbg.get_current_stack()?; - bail!("stopped on dangling breakpoint, debuggee stack:\n{}", stack); - }; - - let coverage = self - .coverage - .modules - .get_mut(&breakpoint.module) - .ok_or_else(|| anyhow!("coverage not initialized for module: {}", breakpoint.module))?; - - coverage.increment(breakpoint.offset); + match self.breakpoints.remove(id) { + Some(breakpoint) => { + let coverage = self + .coverage + .modules + .get_mut(&breakpoint.module) + .ok_or_else(|| { + anyhow!("coverage not initialized for module: {}", breakpoint.module) + })?; + + coverage.increment(breakpoint.offset); + } + // ASAN can set breakpoints which we don't know about, meaning they're not in `self.breakpoints` + None => { + let stack = dbg.get_current_stack()?; + warn!("stopped on dangling breakpoint, debuggee stack:\n{}", stack); + } + } Ok(()) } From 6c1739c675c6ee4767c34c511defb1204300aaee Mon Sep 17 00:00:00 2001 From: Teo Voinea <58236992+tevoinea@users.noreply.github.com> Date: Fri, 8 Sep 2023 18:45:26 +0000 Subject: [PATCH 2/2] fmt --- src/agent/coverage/src/record/windows.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/agent/coverage/src/record/windows.rs b/src/agent/coverage/src/record/windows.rs index 8eb0ea9da6..32d22b5534 100644 --- a/src/agent/coverage/src/record/windows.rs +++ b/src/agent/coverage/src/record/windows.rs @@ -4,7 +4,7 @@ use std::collections::BTreeMap; use std::path::Path; -use anyhow::{anyhow, bail, Error, Result}; +use anyhow::{anyhow, Error, Result}; use debuggable_module::debuginfo::{DebugInfo, Function}; use debuggable_module::load_module::LoadModule; use debuggable_module::loader::Loader;