aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/common.cpp
diff options
context:
space:
mode:
authorGravatar Andy Lutomirski <luto@kernel.org>2015-09-15 18:27:52 -0700
committerGravatar ridiculousfish <corydoras@ridiculousfish.com>2015-12-10 01:02:57 -0800
commitfea798011b25dea69c9ea7cc75c13170b99b0e9a (patch)
treea8f689ec81401d2edd01d873183a1db702510cab /src/common.cpp
parentf17a71de746360822104b6cfeac1fbcad2c8f294 (diff)
Switch show_stackframe to backtrace_symbols_fd
It's simpler and avoids calling into fprintf in contexts in which it might crash or deadlock.
Diffstat (limited to 'src/common.cpp')
-rw-r--r--src/common.cpp13
1 files changed, 2 insertions, 11 deletions
diff --git a/src/common.cpp b/src/common.cpp
index 2d844129..aa5b77c8 100644
--- a/src/common.cpp
+++ b/src/common.cpp
@@ -90,17 +90,8 @@ void show_stackframe()
int trace_size = 0;
trace_size = backtrace(trace, 32);
- char **messages = backtrace_symbols(trace, trace_size);
-
- if (messages)
- {
- debug(0, L"Backtrace:");
- for (int i=0; i<trace_size; i++)
- {
- fwprintf(stderr, L"%s\n", messages[i]);
- }
- free(messages);
- }
+ debug(0, L"Backtrace:");
+ backtrace_symbols_fd(trace, trace_size, STDERR_FILENO);
}
int fgetws2(wcstring *s, FILE *f)