aboutsummaryrefslogtreecommitdiff
path: root/src/google_breakpad/processor/process_state.h
diff options
context:
space:
mode:
authorIvan Penkov <ivanpe@chromium.org>2016-06-20 11:14:47 -0700
committerIvan Penkov <ivanpe@chromium.org>2016-06-20 11:14:47 -0700
commit24f5931c5e0120982c0cbf1896641e3ef2bdd52f (patch)
tree68b24e2ded67b0cabcfb7c6e534e17640997e7b9 /src/google_breakpad/processor/process_state.h
parentlinux-syscall-support: pull in latest version (diff)
downloadbreakpad-24f5931c5e0120982c0cbf1896641e3ef2bdd52f.tar.xz
Server-side workaround to handle overlapping modules.
This change is resolving an issue that was caused by the combination of: - Android system libraries being relro packed in N+. - Breakpad dealing with relro packed libraries in a hack way. This is a fix for http://crbug/611824. I also found an use-after-free issue (bug in Minidump::SeekToStreamType). I disallowed the MinidumpStreamInfo copy and assign constructors and the compiler detected another similar issue in Minidump::Print. Then I disabled the copy and assign constructors for most classes in minidump.h (just in case). There are a couple of classes where I couldn't disallow them (since assign is used). This will require a small refactor so I left it out of this CL. R=mark@chromium.org Review URL: https://codereview.chromium.org/2060663002 .
Diffstat (limited to 'src/google_breakpad/processor/process_state.h')
-rw-r--r--src/google_breakpad/processor/process_state.h11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/google_breakpad/processor/process_state.h b/src/google_breakpad/processor/process_state.h
index 728656f2..9f12b0c6 100644
--- a/src/google_breakpad/processor/process_state.h
+++ b/src/google_breakpad/processor/process_state.h
@@ -39,8 +39,10 @@
#include "common/using_std_string.h"
#include "google_breakpad/common/breakpad_types.h"
-#include "google_breakpad/processor/system_info.h"
+#include "google_breakpad/processor/code_modules.h"
#include "google_breakpad/processor/minidump.h"
+#include "google_breakpad/processor/system_info.h"
+#include "processor/linked_ptr.h"
namespace google_breakpad {
@@ -109,6 +111,9 @@ class ProcessState {
}
const SystemInfo* system_info() const { return &system_info_; }
const CodeModules* modules() const { return modules_; }
+ const vector<linked_ptr<const CodeModule> >* shrunk_range_modules() const {
+ return &shrunk_range_modules_;
+ }
const vector<const CodeModule*>* modules_without_symbols() const {
return &modules_without_symbols_;
}
@@ -172,6 +177,10 @@ class ProcessState {
// ProcessState.
const CodeModules *modules_;
+ // The modules which virtual address ranges were shrunk down due to
+ // virtual address conflicts.
+ vector<linked_ptr<const CodeModule> > shrunk_range_modules_;
+
// The modules that didn't have symbols when the report was processed.
vector<const CodeModule*> modules_without_symbols_;