aboutsummaryrefslogtreecommitdiff
path: root/src/processor/minidump.cc
Commit message (Collapse)AuthorAgeFilesLines
* fix pointer style to match the style guideMike Frysinger2020-07-151-17/+17
| | | | | | | | | | We do this in a lot of places, but we're inconsistent. Normalize the code to the Google C++ style guide. Change-Id: Ic2aceab661ce8f6b993dda21b1cdf5d2198dcbbf Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/2262932 Reviewed-by: Sterling Augustine <saugustine@google.com> Reviewed-by: Mark Mentovai <mark@chromium.org>
* android: truncate lower of two overlapping modulesJoshua Peraza2020-02-211-6/+3
| | | | | | | | | | | | | | | | | | | | | | | | Previously, the processor truncated the upper of two overlapping module ranges to compensate for incorrect reporting of module ranges by the Breakpad client. Crashpad correctly reports module load ranges, so this truncation strategy is no longer necessary. However, when partitioned libraries are used, the base library may have a range which encompasses the other partitions. When this is combined with the truncate upper merge strategy, the base library's executable segment is truncated causing symbolization failures. This patch changes Android's merge strategy to truncate the lower range (which is still the base library, but this strategy truncates from the high end of the library's range, instead of its base). Bug: b/149845120 Change-Id: Ic75ecd3e919432690740eb21ebd4265fc0bbaa86 Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/2067952 Reviewed-by: Mark Mentovai <mark@chromium.org>
* Add fallthrough annotations on new C++ switchesChristopher Grant2019-11-051-16/+1
| | | | | | | | | | | | A recent commit converted some source from C to C++. Chrome has checks against unannotated switch case fallthroughs in C++ code, so the converted source needs annotations. Bug: 990190 Change-Id: Ib92435b4877be936f837928a70b552ec4975d42a Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/1898429 Reviewed-by: Mark Mentovai <mark@chromium.org> Reviewed-by: Mike Frysinger <vapier@chromium.org>
* Improving the support for Fuchsia in Breakpad Processor.Ivan Penkov2019-07-121-0/+5
| | | | | | | | Now decoding the OS name and exception codes for Fuchsia. Still not decoding exception flags (can be added later, if needed). Change-Id: If66cb000828be18f0c1b35d1b1f52b3ca3e1fd67 Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/1699049 Reviewed-by: Mark Mentovai <mark@chromium.org>
* Enable truncation of module rangesJoshua Peraza2019-06-111-13/+21
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ELF modules are loaded in memory in several, possibly discontiguous, segments. If the holes between segments are large enough, other things, possibly other ELF modules may be mapped in that space. Crashpad records the range of modules as the base address of the lowest mapped segment to the high address of the highest mapped segment. This means that when one module is mapped into a hole in another, it appears to the Breakpad processor as overlapping modules. Module ranges are relevant to the Breakpad processor during stackwalking for identifying which module a particular program counter belongs to (i.e. mapping the address to a module's text segment). This patch addresses this issue of overlapping modules by truncating the range of the module with the lower base address. A typical module's text segment is the first loaded segment which would leave the text segment range unaffected. Module producers can restrict the size of holes in their ELF modules with the flag "-Wl,-z,max-page-size=4096", preventing other modules from being mapped in their address range. Properly contemplating ELF module address ranges would require extensions to the minidump format to encode any holes. crbug.com/crashpad/298 This patch also renames the concept of "shrinking down" (which truncated the upper of two overlapping ranges) to "truncate upper". Change-Id: I4599201f1e43918db036c390961f8b39e3af1849 Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/1646932 Reviewed-by: Mark Mentovai <mark@chromium.org>
* Swap MDCVInfoELF::cv_signature if needed.Lei Zhang2018-08-281-1/+5
| | | | | | | | BUG=chromium:877888 Change-Id: Ie4437228dfc32619ce5feb1769ba1644a4ea8ca2 Reviewed-on: https://chromium-review.googlesource.com/1192963 Reviewed-by: Joshua Peraza <jperaza@chromium.org>
* Set new ARM64 context flagsJoshua Peraza2018-08-061-9/+1
| | | | | | Change-Id: I4749459ec37b076b226fa734824380a7254f1064 Reviewed-on: https://chromium-review.googlesource.com/1163826 Reviewed-by: Mark Mentovai <mark@chromium.org>
* Define and use a a new MDRawContextARM64Joshua Peraza2018-08-011-5/+78
| | | | | | | | | | | This struct matches the layout defined by Microsoft and replaces Breakpad's MDRawContextARM64_Old. This CL updates the processor to understand either the old or new structs, but clients continue to write the old structs. Change-Id: I8dedd9ddb2ec083b802723b9ac87beb18d98edbd Reviewed-on: https://chromium-review.googlesource.com/1155938 Reviewed-by: Mark Mentovai <mark@chromium.org>
* Rename MDRawContextARM64 and its context flagsJoshua Peraza2018-08-011-13/+13
| | | | | | | | | | This makes way for the addition of a struct matching Microsoft's layout for ARM64. Change-Id: I115f25290863e7438852691d1ec3c9324a42f7a5 Reviewed-on: https://chromium-review.googlesource.com/1152158 Reviewed-by: Mark Mentovai <mark@chromium.org> Reviewed-by: Mike Frysinger <vapier@chromium.org>
* Ignore duplicate module list entries.Lei Zhang2018-06-281-0/+16
| | | | | | | | BUG=chromium:838322 Change-Id: Ie19c1a39e49332b650a618758f925b127026bddf Reviewed-on: https://chromium-review.googlesource.com/1115437 Reviewed-by: Joshua Peraza <jperaza@chromium.org>
* Only do Android-specific adjustments for Android minidumps.Lei Zhang2018-06-281-4/+8
| | | | | | Change-Id: I33b1f988766f79b473127c4b56b1c81021b89631 Reviewed-on: https://chromium-review.googlesource.com/1115436 Reviewed-by: Joshua Peraza <jperaza@chromium.org>
* Refactor code out of MinidumpModuleList::Read().Lei Zhang2018-06-281-48/+55
| | | | | | | | Add a StoreRange() helper method and an IsDevAshmem() helper function. Change-Id: Iaec9dee1e08bd0155f1c33cfe9af722b0dcaef31 Reviewed-on: https://chromium-review.googlesource.com/1114188 Reviewed-by: Joshua Peraza <jperaza@chromium.org>
* Add an anonymous namespace in minidump.cc.Lei Zhang2018-06-281-41/+32
| | | | | | Change-Id: I1b064013b5d6253fe887245ebda7a861688d3cd6 Reviewed-on: https://chromium-review.googlesource.com/1114089 Reviewed-by: Will Harris <wfh@chromium.org>
* Make breakpad build with -Wimplicit-fallthrough (on linux)Nico Weber2018-01-311-1/+18
| | | | | | | | | | | Fixes a bug where MD_EXCEPTION_CODE_MAC_PPC_ALTIVEC_ASSIST would unintentionally get two reason strings appended. Bug: 177475 Change-Id: I4957268328a242c7c75bbff8add98e9a48ba83ad Reviewed-on: https://chromium-review.googlesource.com/895705 Reviewed-by: Mike Frysinger <vapier@chromium.org> Reviewed-by: Mark Mentovai <mark@chromium.org>
* Make iterator string types match map container string typesMike Wittman2017-12-011-2/+2
| | | | | | | | | Fixes a compilation error when ::string != std::string. Bug: Change-Id: Ifa782da65dd08973de1fc4215f658c798ae5160b Reviewed-on: https://chromium-review.googlesource.com/802324 Reviewed-by: Mark Mentovai <mark@chromium.org>
* Fix minidump_dump_test after 6d0287851fabMark Mentovai2017-10-051-1/+0
| | | | | | Change-Id: I9957f27cd134f862b9831e4b1d90f8a014eb37b6 Reviewed-on: https://chromium-review.googlesource.com/701740 Reviewed-by: Mike Frysinger <vapier@chromium.org>
* Dump Crashpad extension structures in minidump_dumpMark Mentovai2017-09-271-16/+374
| | | | | | | | | | | | | | | | | | | | | | | | | | This is currently mostly useful to expose the annotations that Crashpad stores in minidumps. Example output: MDRawCrashpadInfo version = 1 report_id = 01234567-89ab-cdef-0123-456789abcdef client_id = fedcba98-7654-3210-fedc-ba9876543210 simple_annotations["channel"] = canary simple_annotations["plat"] = OS X simple_annotations["prod"] = Chrome_Mac simple_annotations["ver"] = 59.0.3069.0 module_list[0].minidump_module_list_index = 0 module_list[0].version = 1 module_list[0].simple_annotations["ptype"] = crashpad-handler module_list[1].minidump_module_list_index = 28 module_list[1].version = 1 module_list[1].list_annotations[0] = abort() called Change-Id: I00ba291f93ea3a37fc3754c651b3ccc542e5b8b2 Reviewed-on: https://chromium-review.googlesource.com/688416 Reviewed-by: Robert Sesek <rsesek@chromium.org>
* Fix MSVC build on 64-bitOrgad Shaneh2017-09-251-8/+8
| | | | | | | | | | | Mostly int<->size_t implicit conversions. Warning 4366 (The result of the unary '&' operator may be unaligned) appears in minidump.cc:907, but I don't know why. It looks aligned to me. Change-Id: I641942adc324f8f9832b20662083dc83498688a8 Reviewed-on: https://chromium-review.googlesource.com/637390 Reviewed-by: Mike Frysinger <vapier@chromium.org>
* Increase the maximum number of modules allowed in minidumps.Tobias Sargeant2017-09-011-3/+3
| | | | | | | Bug: google-breakpad:743 Change-Id: I2e40b5cc36c012c18a1c4637634fb139b0d8e14d Reviewed-on: https://chromium-review.googlesource.com/647886 Reviewed-by: Mark Mentovai <mark@chromium.org>
* Handle very large stack tracesLeonard Mosescu2017-07-121-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The main motivation for this change is to handle very large stack traces, normally the result of infinite recursion. This part is actually fairly simple, relaxing a few self-imposed limits on how many frames we can unwind and the max size for stack memory. Relaxing these limits requires stricter and more consistent checks for stack unwinding. There are a number of unwinding invariants that apply to all the platforms: 1. stack pointer (and frame pointer) must be within the stack memory (frame pointer, if preset, must point to the right frame too) 2. unwinding must monotonically increase SP (except for the first frame unwind, this must be a strict increase) 3. Instruction pointer (return address) must point to a valid location 4. stack pointer (and frame pointer) must be appropriately aligned This change is focused on 2), which is enough to guarantee that the unwinding doesn't get stuck in an infinite loop. 1) is implicitly validated part of accessing the stack memory (explicit checks might be nice though). 4) is ABI specific and while it may be valuable in catching suspicious frames is not in the scope of this change. 3) is also an interesting check but thanks to just-in-time compilation it's more complex than just calling StackWalker::InstructionAddressSeemsValid() and we don't want to drop parts of the callstack due to an overly conservative check. Bug: chromium:735989 Change-Id: I9aaba77c7fd028942d77c87d51b5e6f94e136ddd Reviewed-on: https://chromium-review.googlesource.com/563771 Reviewed-by: Mark Mentovai <mark@chromium.org> Reviewed-by: Ivan Penkov <ivanpe@chromium.org>
* minidump_dump: fix up init pathsMike Frysinger2017-03-251-2/+4
| | | | | | | | | | Fix some build & test failures in the previous minidump_dump code. BUG=chromium:598947 Change-Id: Ia8fce453265167368de96747a8a92af930e78245 Reviewed-on: https://chromium-review.googlesource.com/458881 Reviewed-by: Mike Frysinger <vapier@chromium.org>
* minidump_dump: dump stack memory like hexdumpMike Frysinger2017-03-241-8/+70
| | | | | | | | | | | | | | | The current stack output is one line byte string which is not easy for humans to parse. Extend the print mode to support a hexdump-like view and switch to that by default. Now we get something like: Stack 00000000 20 67 7b 53 94 7f 00 00 01 00 00 00 00 00 00 00 | g{S...........| 00000010 00 70 c4 44 9a 25 00 00 08 65 7a 53 94 7f 00 00 |.p.D.%...ezS...| BUG=chromium:598947 Change-Id: I868e1cf4faa435a14c5f1c35f94a5db4a49b6a6d Reviewed-on: https://chromium-review.googlesource.com/404008 Reviewed-by: Mark Mentovai <mark@chromium.org>
* Fix segfault when interpreting bad debug_fileJoshua Peraza2017-03-081-1/+3
| | | | | | | | BUG=chromium:661037 Change-Id: Ia4da0bd9787c232a6a199cfdfccfbed60c2515c2 Reviewed-on: https://chromium-review.googlesource.com/450090 Reviewed-by: Joshua Peraza <jperaza@chromium.org>
* Revert "Several fixes for broken Mac build"Roman Margold2017-02-011-1/+1
| | | | This reverts commit 5c521532fc0a1b65f42c0d61d2da206eadf318b8.
* Several fixes for broken Mac buildRoman Margold2017-02-011-1/+1
|
* Fixed a bug where cv record size was not correctly checked.Joshua Peraza2017-01-301-4/+6
| | | | | | | | BUG= Change-Id: I6c1d78cfe344c7b90a03f6df35193d67623bfd89 Reviewed-on: https://chromium-review.googlesource.com/434094 Reviewed-by: Ivan Penkov <ivanpe@chromium.org>
* Added classes to support reading unloaded module lists in minidumps.Joshua Peraza2016-12-161-0/+390
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The implementations of Module/UnloadedModule and ModuleList/UnloadedModuleList are very similar. They have been made separate classes because they operate on different structs, complicating factoring code into a base class and have sufficiently different implementation that templates would not be suitable. When unloaded modules have partially overlapping ranges, the module shrink down feature is used to move the start of the higher range to the end of the lower range. If two unloaded modules overlap identically, the second module will not be added to the range map and the failure ignored. Places where MinidumpUnloadedModule differs from MinidumpModule: code_identifier: the android/linux case is deleted since cv_records never exist. debug_file/debug_identifier/version: always return empty strings. Read: an expected size is provided as opposed to MD_MODULE_SIZE. A seek is used if there are extra, unused bytes. Places where MinidumpUnloadedModuleList differs from MinidumpModuleList: Read: entry and header size is provided in the header in addition to count. This changes the checks and handling of padding. Failures from StoreRange are ignored. GetMainModule: always returns NULL. BUG= Change-Id: I52e93d3ccc38483f50a6418fede8b506ec879aaa Reviewed-on: https://chromium-review.googlesource.com/421566 Reviewed-by: Joshua Peraza <jperaza@chromium.org>
* Update linksOrgad Shaneh2016-11-181-4/+4
| | | | | | | | | | code.google.com is obsolete. Fix all broken markdown links while at it. Change-Id: I6a337bf4b84eacd5f5c749a4ee61331553279009 Reviewed-on: https://chromium-review.googlesource.com/411800 Reviewed-by: Mike Frysinger <vapier@chromium.org>
* Fix iterating over the MDXStateFeature entries on 32-bit hostsGabriele Svelto2016-10-181-1/+1
| | | | | | | | | | | On 32-bit hosts the new code for dumping version 5 of the MDRawMiscInfo structure uses a 32-bit left shift to select flags corresponding to the entries in the MDXStateFeature array. Since the array is made of 64 element this automatically skipped half of it. Change-Id: Ic4e3beaf6c56083524b33da9a396c14eec0d2bd2 Reviewed-on: https://chromium-review.googlesource.com/396107 Reviewed-by: Ted Mielczarek <ted@mielczarek.org>
* Update MDRawMiscInfo to support version 5 of the MINIDUMP_MISC_INFO_N structure.Gabriele Svelto2016-08-191-7/+80
| | | | | | | | The routines used to read from the structure were also modified to accomodate for unknown future versions by skipping over the unsupported part instead of failing. R=ted.mielczarek@gmail.com Review URL: https://codereview.chromium.org/2109063004/ .
* Server-side workaround to handle overlapping modules.Ivan Penkov2016-06-201-4/+41
| | | | | | | | | | | | | | 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 .
* Adding support for overlapping ranges to RangeMap.Ivan Penkov2016-06-051-4/+9
| | | | | | | | | | When enabled, adding of a new range that overlaps with an existing one can be a successful operation. The range which ends at the higher address will be shrunk down by moving its start position to a higher address so that it does not overlap anymore. This change is required to fix http://crbug/611824. The actual fix will come in a separate CL. R=mmandlis@chromium.org Review URL: https://codereview.chromium.org/2029953003 .
* Revert "Write adjusted range back to module"Tao Bai2016-05-131-8/+0
| | | | | | | | | | | | | This is no right fix, we shouldn't allow module overlap. This reverts commit 4f417c8c0ffceb6c2516c6ef00cd91ca5746d852. BUG=606972 R=mark@chromium.org Review URL: https://codereview.chromium.org/1976683004 . Patch from Tao Bai <michaelbai@chromium.org>.
* Write adjusted range back to moduleTao Bai2016-05-031-0/+8
| | | | | | | | | | | | | | | | | In Android, the mmap could be overlapped by /dev/ashmem, we adjusted the range in https://breakpad.appspot.com/9744002/, but adjusted range isn't written back to module, this caused the corresponding module be dropped in BasicCodeModules copy constructor. This also fix a lot of 'unable to store module' warnings when dumping Android's minidump. BUG=606972 R=mark@chromium.org, wfh@chromium.org Review URL: https://codereview.chromium.org/1939333002 . Patch from Tao Bai <michaelbai@chromium.org>.
* Bump MinidumpMemoryRegion::max_bytes to 2MBTed Mielczarek2016-04-141-1/+1
| | | | | | | BUG=https://bugs.chromium.org/p/google-breakpad/issues/detail?id=694 R=mark@chromium.org Review URL: https://codereview.chromium.org/1883253002 .
* Add some new stream types to MDStreamTypeTed Mielczarek2016-04-131-0/+8
| | | | | | | | | | | | | | I ran minidump_dump on a dump from Firefox on my Windows 10 machine and noticed some streams that Breakpad didn't have names for. Looking in minidumpapiset.h in the Windows 10 SDK finds these values in MINIDUMP_STREAM_TYPE. There are also struct definitions for the stream data for some of them (all but JavaScriptData), but I don't have a particular need for those currently. R=mark@chromium.org BUG= Review URL: https://codereview.chromium.org/1884943002 .
* Remove unreferenced local variable which breaks build.Yunxiao Ma2016-04-051-3/+2
| | | | | | | | | | | | | Depending on compiler's setting, the unreferenced local variable may cause build break. modified: src/processor/minidump.cc R=mark@chromium.org Review URL: https://codereview.chromium.org/1866533002 . Patch from Yunxiao Ma <yxma@google.com>.
* Rename stdio.h wrapper file to stdio_wrapper.h.Yunxiao Ma2016-04-051-1/+1
| | | | | | | | | | | | | | | | | | | | Some projects will get build break because the comipler is confused when searches for the standard stdio.h. Rename the wrapper file to avoid that. renamed: src/common/stdio.h -> src/common/stdio_wrapper.h modified: src/processor/minidump.cc modified: src/processor/dump_context.cc modified: src/processor/logging.cc modified: src/processor/minidump.cc modified: src/processor/minidump_processor.cc modified: src/processor/stackwalk_common.cc modified: src/processor/symbolic_constants_win.cc R=mark@chromium.org, labath@google.com Review URL: https://codereview.chromium.org/1864603002 . Patch from Yunxiao Ma <yxma@google.com>.
* Fix buffer overrun in MinidumpModule::debug_identifier with MDCVInfoELFTed Mielczarek2016-02-171-1/+3
|
* Change MDCVInfoELF into something usable.Ted Mielczarek2016-02-101-18/+88
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch changes MDCVInfoELF (which is currently unused, apparently a vestigal bit of code landed as part of Solaris support) into a supported CodeView format that simply contains a build id as raw bytes. Modern ELF toolchains support build ids nicely: https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Developer_Guide/compiling-build-id.html It would be useful to have the original build ids of loaded modules in Linux minidumps, since tools like Fedora's darkserver allow querying by build id and the current Breakpad code truncates the build id to the size of a GUID, which loses information: https://darkserver.fedoraproject.org/ A follow-up patch will change the Linux minidump generation code to produce MDCVInfoELF in minidumps instead of MDCVInfoPDB70. This patch should be landed first to ensure that crash processors are able to handle this format before dumps are generated containing it. The full build id is exposed as the return value of Minidump::code_identifier(), which currently just returns "id" for modules in Linux dumps. For backwards-compatibility, Minidump::debug_identifier() continues to treat the build id as a GUID, so debug identifiers for existing modules will not change. BUG= R=mark@chromium.org Review URL: https://codereview.chromium.org/1675413002 .
* [mips64] Support for mips n64Mike Frysinger2016-02-061-1/+10
| | | | | | | | | | Adding remaining mips n64 support including stackwalker. BUG=None TEST=manually tested on Linux/Android R=vapier@chromium.org Review URL: https://codereview.chromium.org/1418453011 .
* Fix usage of snprintf for MSVCPavel Labath2016-01-191-4/+1
| | | | | | | | | | | | | | Older versions of MSVC don't have a snprintf functions. Some files were already working around that, but not all of them. Instead of copying the logic into every file, I centralize it into a new stdio.h wrapper file and make other files include that. BUG= R=mark@chromium.org Review URL: https://codereview.chromium.org/1602563003 . Patch from Pavel Labath <labath@google.com>.
* Let breakpad build with -Wall on OS X and Linux.Lei Zhang2015-12-291-9/+0
| | | | | | | | | A=thakis@chromium.org Original Review: https://codereview.chromium.org/1550933002/ R=thakis@chromium.org Review URL: https://codereview.chromium.org/1554613002 .
* Fix MSVC build (including on 2015), drop some workarounds for MSVC older ↵Ted Mielczarek2015-10-061-2/+2
| | | | | | | | | | | | | | | | | | | than 2013. The Windows client gyp files were missing proc_maps_linux.cc for the unittest build. Adding that revealed some build errors due to it unconditionally including <inttypes.h>. Removing the workarounds in breakpad_types.h (and a few other places) made that build, which means that Visual C++ 2013 is now our minimum supported version of MSVC. Additionally I tried building with VC++ 2015 and fixed a few warnings (which were failing the build because we have /WX enabled) to ensure that that builds as well. BUG=https://code.google.com/p/google-breakpad/issues/detail?id=669 R=mark@chromium.org Review URL: https://codereview.chromium.org/1353893002 .
* Allow Print() to be called by const instances of MinidumpLinuxMaps andLiu.andrew.x@gmail.com2015-08-121-2/+2
| | | | | | | | | | MinidumpLinuxMapsList. R=ivanpe@chromium.org Review URL: https://codereview.chromium.org/1287803002 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1482 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Change Print method of MinidumpLinuxMaps and MinidumpLinuxMapsList to printLiu.andrew.x@gmail.com2015-08-111-1/+1
| | | | | | | | contents of /proc/<pid>/maps instead of just the files mapped to memory. Review URL: https://codereview.chromium.org/1273123002 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1481 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Workaround for range map overlaps caused by Android package relocation.ivanpe@chromium.org2015-08-101-6/+25
| | | | | | | | | | | | | | If there is a range overlap, the cause may be the client correction applied for Android packed relocations. If this is the case, back out the client correction and retry. Patch from Simon Baldwin <simonb@chromium.org>. https://code.google.com/p/chromium/issues/detail?id=509110 R=simonb@chromium.org Review URL: https://codereview.chromium.org/1275173005 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1480 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Fix potential null pointer dereference.Liu.andrew.x@gmail.com2015-07-311-8/+15
| | | | | | | | | | | | If a MinidumpLinuxMapsList was created and destroyed without its Read method, the program would have a segmentation fault because the destructor did not check for a null maps_ field. Additional changes include additional supplementary null checks, a potential memory leak fix, and some comment removal. Review URL: https://codereview.chromium.org/1271543002 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1478 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Remove unnecessary dependencies.Liu.andrew.x@gmail.com2015-07-291-2/+0
| | | | | | Review URL: https://codereview.chromium.org/1266493002 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1477 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Add support for Linux memory mapping stream and remove ELF header usageLiu.andrew.x@gmail.com2015-07-281-0/+143
| | | | | | | | | | | | | | | | | | | | | | | | | | | when checking exploitability rating. Linux minidumps do not support MD_MEMORY_INFO_LIST_STREAM, meaning the processor cannot retrieve its memory mappings. However, it has its own stream, MD_LINUX_MAPS, which contains memory mappings specific to Linux (it contains the contents of /proc/self/maps). This CL allows the minidump to gather information from the memory mappings for Linux minidumps. In addition, exploitability rating for Linux dumps now use memory mappings instead of checking the ELF headers of binaries. The basis for the change is that checking the ELF headers requires the minidumps to store the memory from the ELF headers, while the memory mapping data is already present, meaning the size of a minidump will be unchanged. As a result, of removing ELF header analysis, two unit tests have been removed. Arguably, the cases that those unit tests check do not merit a high exploitability rating and do not warrant a solid conclusion that was given earlier. R=ivanpe@chromium.org Review URL: https://codereview.chromium.org/1251593007 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1476 4c0a9323-5329-0410-9bdc-e9ce6186880e