utils: Safely handle NULL pointers returned by dladdr

This commit is contained in:
Mathias Agopian
2026-03-31 11:17:03 -07:00
committed by Mathias Agopian
parent b351086bc4
commit 8ac45bb391
+6 -4
View File
@@ -149,14 +149,16 @@ io::ostream& operator<<(io::ostream& stream, CallStack const& UTILS_UNUSED calls
void* pc = (void*)callstack[i];
#if HAS_DLADDR
if (::dladdr(pc, &info)) {
char const* exe = strrchr(info.dli_fname, '/');
char const* fname = info.dli_fname ? info.dli_fname : "<unknown>";
char const* sname = info.dli_sname ? info.dli_sname : "<unknown>";
char const* exe = strrchr(fname, '/');
snprintf(buf, sizeof(buf), "#%u\t%-31s %*p %s + %zd\n",
unsigned(i),
exe ? exe + 1 : info.dli_fname,
exe ? exe + 1 : fname,
int(2 + sizeof(void*)*2),
pc,
CallStack::demangle(info.dli_sname).c_str(),
(char *)callstack[i] - (char *)info.dli_saddr);
CallStack::demangle(sname).c_str(),
(char *)callstack[i] - (char *)(info.dli_saddr ? info.dli_saddr : pc));
stream << buf;
} else
#endif