summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--os/backtrace.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/os/backtrace.c b/os/backtrace.c
index 99d776950..bf7ee68e2 100644
--- a/os/backtrace.c
+++ b/os/backtrace.c
@@ -97,9 +97,14 @@ xorg_backtrace(void)
else
filename = "?";
- ErrorFSigSafe("%u: %s (%s%s+0x%x) [%p]\n", i++, filename, procname,
- ret == -UNW_ENOMEM ? "..." : "", (int)off,
- (void *)(uintptr_t)(ip));
+
+ if (unw_is_signal_frame(&cursor)) {
+ ErrorFSigSafe("%u: <signal handler called>\n", i++);
+ } else {
+ ErrorFSigSafe("%u: %s (%s%s+0x%x) [%p]\n", i++, filename, procname,
+ ret == -UNW_ENOMEM ? "..." : "", (int)off,
+ (void *)(uintptr_t)(ip));
+ }
ret = unw_step(&cursor);
if (ret < 0)