mirror of
https://github.com/chromium/crashpad.git
synced 2025-01-14 09:17:57 +08:00
Don't merge stack mappings with different names
This is particularly a problem when the neighboring mapping is a special mapping not readable from another process. For example: 7fff96aeb000-7fff96b0c000 rw-p 00000000 00:00 0 [stack] 7fff96b0c000-7fff96b0e000 r--p 00000000 00:00 0 [vvar] [vvar] is a special mapping which makes some kernel data available for virtual system calls. Attempting to read this region via the /proc/<pid>/maps file returns an IO error which causes Crashpad to abort capturing any of the thread's stack. Neighboring mappings with empty names are eligible to be merged since they result from changing permissions on existing named mappings. Change-Id: I587bd2ec6f9759d284f1f9b1d93f2a44ddf61e92 Reviewed-on: https://chromium-review.googlesource.com/1072803 Reviewed-by: Scott Graham <scottmg@chromium.org> Commit-Queue: Joshua Peraza <jperaza@chromium.org>
This commit is contained in:
parent
9839ef5605
commit
c86c9f0f73
@ -41,7 +41,9 @@ bool ShouldMergeStackMappings(const MemoryMap::Mapping& stack_mapping,
|
||||
const MemoryMap::Mapping& adj_mapping) {
|
||||
DCHECK(stack_mapping.readable);
|
||||
return adj_mapping.readable && stack_mapping.device == adj_mapping.device &&
|
||||
stack_mapping.inode == adj_mapping.inode;
|
||||
stack_mapping.inode == adj_mapping.inode &&
|
||||
(stack_mapping.name == adj_mapping.name ||
|
||||
stack_mapping.name.empty() || adj_mapping.name.empty());
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
Loading…
x
Reference in New Issue
Block a user