From cbf0df774dd7baa2af5a7d28662fd58b90ea8c3d Mon Sep 17 00:00:00 2001 From: Antony Polukhin Date: Sun, 7 Jul 2024 20:30:51 +0300 Subject: [PATCH] Fix addr2line work when the process is looked up via PATH. Fixes #72 --- include/boost/stacktrace/detail/addr2line_impls.hpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/include/boost/stacktrace/detail/addr2line_impls.hpp b/include/boost/stacktrace/detail/addr2line_impls.hpp index 1e71768..009987e 100644 --- a/include/boost/stacktrace/detail/addr2line_impls.hpp +++ b/include/boost/stacktrace/detail/addr2line_impls.hpp @@ -18,6 +18,7 @@ #include #include #include +#include #include #include @@ -116,7 +117,9 @@ inline std::string addr2line(const char* flag, const void* addr) { std::string res; boost::stacktrace::detail::location_from_symbol loc(addr); - if (!loc.empty()) { + // For programs started through $PATH loc.name() is not absolute and + // addr2line will fail. + if (!loc.empty() && std::strchr(loc.name(), '/') != nullptr) { res = loc.name(); } else { res.resize(16);