diff options
author | Christopher Ferris <cferris@google.com> | 2016-03-09 14:35:54 -0800 |
---|---|---|
committer | Christopher Ferris <cferris@google.com> | 2016-03-10 14:14:43 -0800 |
commit | c463ba45c42b4e2d8ce30c02a626d7183102f46e (patch) | |
tree | 4e68f1cb0a203371c57ef864def5acc4178a5d7f /libbacktrace/Backtrace.cpp | |
parent | 01d76eb1ecb943db042eb6618087c0e22588e6b3 (diff) | |
download | system_core-c463ba45c42b4e2d8ce30c02a626d7183102f46e.tar.gz system_core-c463ba45c42b4e2d8ce30c02a626d7183102f46e.tar.bz2 system_core-c463ba45c42b4e2d8ce30c02a626d7183102f46e.zip |
Add error reporting mechanism for failing Unwind.
Remove the logging of an error if a thread disappears before the unwind
can begin. This can happen, so allow the caller to determine if this
is really a problem worth logging.
Bug: 27449879
(cherry picked from commit 206a3b9798e3622c906a3cafdb113c271c1c927c)
Change-Id: If9e7cfeb6eb7b122679a734c1a9eacee8354ef18
Diffstat (limited to 'libbacktrace/Backtrace.cpp')
-rw-r--r-- | libbacktrace/Backtrace.cpp | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/libbacktrace/Backtrace.cpp b/libbacktrace/Backtrace.cpp index baa3d0f70..995abc02c 100644 --- a/libbacktrace/Backtrace.cpp +++ b/libbacktrace/Backtrace.cpp @@ -148,3 +148,24 @@ Backtrace* Backtrace::Create(pid_t pid, pid_t tid, BacktraceMap* map) { return new UnwindPtrace(pid, tid, map); } } + +std::string Backtrace::GetErrorString(BacktraceUnwindError error) { + switch (error) { + case BACKTRACE_UNWIND_NO_ERROR: + return "No error"; + case BACKTRACE_UNWIND_ERROR_SETUP_FAILED: + return "Setup failed"; + case BACKTRACE_UNWIND_ERROR_MAP_MISSING: + return "No map found"; + case BACKTRACE_UNWIND_ERROR_INTERNAL: + return "Internal libbacktrace error, please submit a bugreport"; + case BACKTRACE_UNWIND_ERROR_THREAD_DOESNT_EXIST: + return "Thread doesn't exist"; + case BACKTRACE_UNWIND_ERROR_THREAD_TIMEOUT: + return "Thread has not repsonded to signal in time"; + case BACKTRACE_UNWIND_ERROR_UNSUPPORTED_OPERATION: + return "Attempt to use an unsupported feature"; + case BACKTRACE_UNWIND_ERROR_NO_CONTEXT: + return "Attempt to do an offline unwind without a context"; + } +} |