History log of /system/core/libbacktrace/UnwindMap.cpp
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
0c572d01afdf9bfee340ab5c167d744ea91316bf 16-Jun-2016 Christopher Ferris <cferris@google.com> Fix race condition updating local map data.

If the underlying local map changes, it's possible for multiple
threads to try and modify the map data associated with the UnwindLocalMap
object. Add a lock when generating the local map to avoid this problem.

In addition, add a read lock whenever any caller gets the maps iterator.
Updated all iterator callers to make this lock.

Bug: 29387050
Bug: 31067025

(cherry picked from commit 3a14004c7f521cf2ca6dfea182fa7441e77c97e7)

Change-Id: Id00116f156a24b36085c0d5dfc3dde4d2ac55194
/system/core/libbacktrace/UnwindMap.cpp
d4c884330c384bbb06f9a0d1fee2d2ae2086521c 05-Feb-2016 Christopher Ferris <cferris@google.com> Fix use of uninitialized memory.

When creating an UnwindMapLocal fails in the Build() function call,
the destructor for UnwindMap is called. Unfortunately, the map_cursor_
member variable has not been initialized, so the call to destroy it
winds up operating on garbage data.

Part of this is a result of a bad class hierarchy, so this refactors
the classes slightly, and properly initializes the map_cursor_ member
variable in the base class.

Bug: 26931578
Change-Id: I885596bf65e4ef63559cee2c56cd41576d5ecc1b
/system/core/libbacktrace/UnwindMap.cpp
af67fb247540ef084a0b644e1d3bf225db4de6bd 06-May-2015 Christopher Ferris <cferris@google.com> Add offset to map data.

Also, print the offset in the maps section.

Bug: 20864928
Change-Id: I71f005726e5ef73cf75bbcb8f829fd5127cb9d61
(cherry picked from commit 5c8856854de4ae7836fc1073d534f4b7b7a03eb9)
/system/core/libbacktrace/UnwindMap.cpp
329ed7dae49eba09bdf865dd999d1a7e73bb9687 02-May-2015 Christopher Ferris <cferris@google.com> Add load base to map for relocation packing.

The new linker relocation packing support uses non-zero load bases,
so we better handle them properly.

Also print out the load base for a map if it's non-zero.

Bug: 20687795
Change-Id: Iec2d1db2051e7b4a278c1dfa57d745128a7f2974
/system/core/libbacktrace/UnwindMap.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/UnwindMap.cpp
12385e3ad085aa1ac06c26529b32b688503a9fcf 06-Feb-2015 Christopher Ferris <cferris@google.com> Move map data into backtrace data proper.

The backtrace structure used to include a pointer to a backtrace_map_t
that represented the map data for a particular pc. This introduced a
race condition where the pointer could be discarded, but the backtrace
structure still contained a pointer to garbage memory. Now all of the map
information is right in the structure.

Bug: 19028453
Change-Id: If7088a73f3c6bf1f3bc8cdd2bb4b62e7cab831c0
/system/core/libbacktrace/UnwindMap.cpp
dda47b786835ef3689f06e24650eb65176e2dc5e 05-Aug-2014 Christopher Ferris <cferris@google.com> Allow getting an uncached process map.

(cherry picked from commit f02593b0e61f8108449770094caa7bb39a646ec1)

Change-Id: I2012bf2dc553ebc663345b9eac6d794e80df9c00
/system/core/libbacktrace/UnwindMap.cpp
ac2fe7eb81789274ab98573d0c4b0866bed1f254 22-May-2014 Dan Albert <danalbert@google.com> Add missing headers

These headers are needed for pid_t and free when using libc++ headers (POSIX
does not require that the symbols be exposed with the previous includes).

Change-Id: Ia51a4fdfdbae7377130a43c401c2d8d241671d1e
/system/core/libbacktrace/UnwindMap.cpp
e29609106033a48a6128664668d22bf4fb42a7ee 08-Mar-2014 Christopher Ferris <cferris@google.com> Create an UnwindMapLocal object.

The way libunwind handles local unwinds is different from remote unwinds,
so create a new map object to handle the differences.

Add new test to verify the map data is being generated correctly.

Add new tests to check for leaks.

Refactor the BACK_LOGW code into a single header file.

Change-Id: I01f3cbfc4b927646174ea1b614fa25d23b9b3427
/system/core/libbacktrace/UnwindMap.cpp
73dc1cc3fb799be309b8db57618be07de755eca4 01-Feb-2014 Christopher Ferris <cferris@google.com> Call a specialized local map set.

Bug: 12852152
Change-Id: I8a0c558bc218805b0e06371af0af055e4aa6e0bb
/system/core/libbacktrace/UnwindMap.cpp
2b4ae52a56e175cc64baaa6c70412d06411d7af0 29-Jan-2014 Christopher Ferris <cferris@google.com> Fix global pointing to local variable.

Change-Id: I933cbb680ca6310c13634f09a9827077c8dbd568
/system/core/libbacktrace/UnwindMap.cpp
df2906186b6952c57b1f662bfef0b65c9f8c2e0d 23-Jan-2014 Christopher Ferris <cferris@google.com> Re-enable libunwind for arm.

Update to handle the new optimized way that libunwind works.

In addition, a small refactor of the BacktraceMap code.

A few new tests of for good measure.

Change-Id: I2f9b4f5ad5a0dfe907b31febee76e4b9b94fb76f
/system/core/libbacktrace/UnwindMap.cpp