From 0527cea39fa29e7968471f351ad76e105ea6459c Mon Sep 17 00:00:00 2001 From: Jeremy <51220084+jeremy-rifkin@users.noreply.github.com> Date: Sun, 28 Apr 2024 19:51:52 -0500 Subject: [PATCH] For the libbacktrace back-end don't treat missing debug info in ELFs as a critical error; fixes #114 --- src/symbols/symbols_with_libbacktrace.cpp | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/symbols/symbols_with_libbacktrace.cpp b/src/symbols/symbols_with_libbacktrace.cpp index fc8011e..ce76442 100644 --- a/src/symbols/symbols_with_libbacktrace.cpp +++ b/src/symbols/symbols_with_libbacktrace.cpp @@ -38,6 +38,12 @@ namespace libbacktrace { } void error_callback(void*, const char* msg, int errnum) { + if(msg == std::string("no debug info in ELF executable")) { + // https://github.com/jeremy-rifkin/cpptrace/issues/114 + // https://github.com/ianlancetaylor/libbacktrace/blob/ae1e707dbacd4a5cc82fcf2d3816f410e9c5fec4/elf.c#L592 + // not a critical error, just return + return; + } throw internal_error("Libbacktrace error: {}, code {}", msg, errnum); } @@ -57,8 +63,8 @@ namespace libbacktrace { // TODO: Handle backtrace_pcinfo calling the callback multiple times on inlined functions stacktrace_frame resolve_frame(const frame_ptr addr) { try { - stacktrace_frame frame; - frame.column = nullable::null(); + stacktrace_frame frame = null_frame; + frame.raw_address = addr; backtrace_pcinfo( get_backtrace_state(), addr,