From a5d3f2d57850fabbd6f032518a3a5e2fadce58ce Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Wed, 20 Mar 2013 17:20:13 -0400 Subject: [PATCH] make PBD::stacktrace() be clear if it cannot generate stacktraces for some (runtime) reason. not sure why this is an issue, but it is, right now, on my machine --- libs/pbd/stacktrace.cc | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/libs/pbd/stacktrace.cc b/libs/pbd/stacktrace.cc index dd5e1fd3b6..ca614509a5 100644 --- a/libs/pbd/stacktrace.cc +++ b/libs/pbd/stacktrace.cc @@ -77,15 +77,21 @@ PBD::stacktrace (std::ostream& out, int levels) size_t i; size = backtrace (array, 200); - strings = backtrace_symbols (array, size); - - if (strings) { - for (i = 0; i < size && (levels == 0 || i < size_t(levels)); i++) { - out << " " << demangle (strings[i]) << std::endl; + if (size) { + strings = backtrace_symbols (array, size); + + if (strings) { + + for (i = 0; i < size && (levels == 0 || i < size_t(levels)); i++) { + out << " " << demangle (strings[i]) << std::endl; + std::cerr << " " << demangle (strings[i]) << std::endl; + } + + free (strings); } - - free (strings); + } else { + out << "no stacktrace available!" << std::endl; } }