History log of /system/core/libbacktrace/BacktraceCurrent.cpp
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
d9a06afb19156b61ee85c975a292d884bba09c7f 03-Sep-2015 Christopher Ferris <cferris@google.com> Add a logging handler on timeout.

If the signal handler doesn't fire in the given time when trying to unwind
a thread, put on a logging handler. This prevents crashes if the signal
does eventually fire.

Bug: 23783762

(cherry picked from commit d7226f9a1485ba19f714369fd7f8b444d66feb61)

Change-Id: Ib990a06733cc93717752ab4998f4ae26afd7e249
/system/core/libbacktrace/BacktraceCurrent.cpp
7e2cb84e9c41e993daf7fac0b18335d6fe6f9acb 29-May-2015 Christopher Ferris <cferris@google.com> Modify the code to avoid potential deadlocks.

If the signal to dump a thread is never delivered, then it's
possible for a deadlock. The signal handler is responsible for
unlocking and deleting the ThreadEntry created for the pid/tid
combination. This means if the signal is lost, the ThreadEntry
gets stuck locked and never deleted. If a second attempt to get
a backtrace of this thread occurs, there is a deadlock.

Also, decrease the timeout from 10 seconds to 5 seconds. The original
10 seconds was because the unwind was actually done in the signal
handler. Now the signal handler does nothing but copy the ucontext
structure and let the caller do the unwind.

Bug: 21086132
(cherry picked from commit 2d09171758b7d98c77f27e439a4caf35dd84c311)

Change-Id: I414c500eb08983a5017caf3fce4f499465575a9d
/system/core/libbacktrace/BacktraceCurrent.cpp
eb19e766322fb57ccde989e0e35b0ac3e28a4ac2 15-May-2015 Christopher Ferris <cferris@google.com> Prevent crashes if a map cannot be created.

Under some conditions, /proc/<pid>/maps might return nothing. If we
try and unwind in this case, we'll crash. Check this case and fail
the unwind.

Add checks that no other functions try and use map_ without
checking for nullptr.

Add logging when an unwind fails so it's clear what happened.

Bug: 21162746
Change-Id: I56ce51dda0cfc9db20475a441f118108196aa07c
(cherry picked from commit 30c942cf1024bf791c28ab9b67a1f752de72248c)
/system/core/libbacktrace/BacktraceCurrent.cpp
428fad97a0c9c3def1489b16f0257a9cbcfd43f8 30-Apr-2015 Dan Albert <danalbert@google.com> Remove libbacktrace definition of gettid.

Also simplifies the Darwin implementation of gettid, because
apparently libbacktrace had a better way of doing it.

Bug: 19517541

(cherry picked from commit 23f750b068ddf5b20fb5d153a798b22562368992)

Change-Id: I2f888e8ed7a2f5719973786cbcbb399a81867ee9
/system/core/libbacktrace/BacktraceCurrent.cpp
ca09ce902c17c2bffc02bfafaf0844204ac13333 01-Apr-2015 Christopher Ferris <cferris@google.com> Discards frames for code within library.

When doing a local unwind, do not include the frames that come
from either libunwind or libbacktrace.

Bug: 11518609
Change-Id: I0ec8d823aebbfa0903e61b16b7e5663f3fd65e78
/system/core/libbacktrace/BacktraceCurrent.cpp
2c43cff01d1271be451671567955158629b23670 27-Mar-2015 Christopher Ferris <cferris@google.com> Refactor the code.

The object hierarchy was confusing and convoluted. This removes
a lot of unnecessary code, and consolidates the BacktraceCurrent
and BacktraceThread code into BacktraceCurrent.

Change-Id: I01c8407d493712a48169df49dd3ff46db4a7c3ae
/system/core/libbacktrace/BacktraceCurrent.cpp