unwindstack: fix dangling pointer in LocalUpdatableMaps.
Previously, when reparsing /proc/self/maps, we would remove duplicate MapInfo entries, but leave the following entry's prev_map pointing toward the soon-to-be-deleted MapInfo, leading to explosions. Test: libunwindstack_test Test: booted with libfdtrack.so preloaded Change-Id: Ibfb7a8712540fe3aaadc10e9c31938f6ecddf17b
This commit is contained in:
parent
bace5995f1
commit
8a243118db
1 changed files with 3 additions and 0 deletions
|
|
@ -139,6 +139,9 @@ bool LocalUpdatableMaps::Reparse() {
|
|||
if (start == info->start && end == info->end && flags == info->flags && *name == info->name) {
|
||||
// No need to check
|
||||
search_map_idx = old_map_idx + 1;
|
||||
if (new_map_idx + 1 < maps_.size()) {
|
||||
maps_[new_map_idx + 1]->prev_map = info.get();
|
||||
}
|
||||
maps_[new_map_idx] = nullptr;
|
||||
total_entries--;
|
||||
break;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue