aboutsummaryrefslogtreecommitdiff
path: root/src/processor
Commit message (Collapse)AuthorAgeFilesLines
...
* Detect corrupt symbol files during minidump processing. Recover from the ↵ivan.penkov@gmail.com2013-07-1124-200/+524
| | | | | | | | | | | | | | | | | | | | | errors and use the good data if possible. More specifically: - Detect corrupt symbols during minidump processing and provide the list of modules with corrupt symbols in the ProcessState. This will allow listing the corrupt symbol files in the final crash report. - Skip and recover from symbol data parse errors - don't give up until 100 parse errors are seen. - In order to recover from '\0' (null terminator) in the middle of a symbol file, a couple of methods have to be updated to require both buffer pointer and length. Previously they required only a buffer pointer (char *) and the size of the buffer was evaluated using strlen which is not reliable when the data is corrupt. Most of the changes are due to these signature updates. - Added and updated unittests. Also, updated minidump_stackwalk to show a WARNING for corrupt symbols. Output looks like this: ... Loaded modules: 0x000da000 - 0x000dafff Google Chrome Canary ??? (main) 0x000e0000 - 0x0417dfff Google Chrome Framework 0.1500.0.3 (WARNING: Corrupt symbols, Google Chrome Framework, 4682A6B4136436C4BFECEB62D498020E0) 0x044a8000 - 0x04571fff IOBluetooth 0.1.0.0 ... Review URL: https://breakpad.appspot.com/613002 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1200 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Fix a clang warning:mark@chromium.org2013-06-281-4/+2
| | | | | | | | | | | | | | | | | | | | ../../breakpad/src/processor/tokenize.cc:65:7: error: logical not is only applied to the left hand side of this comparison [-Werror,-Wlogical-not-parentheses] if (!remaining > 0) { ^ ~ ../../breakpad/src/processor/tokenize.cc:65:7: note: add parentheses after the '!' to evaluate the comparison first if (!remaining > 0) { ^ ( ) ../../breakpad/src/processor/tokenize.cc:65:7: note: add parentheses around left hand side expression to silence this warning if (!remaining > 0) { ^ ( ) R=thakis@chromium.org Review URL: https://breakpad.appspot.com/608002 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1196 4c0a9323-5329-0410-9bdc-e9ce6186880e
* This change is addressing a particularly nasty issue where the stackwalkerivan.penkov@gmail.com2013-06-273-12/+68
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | doesn't see the correct thread stack memory. Instead, it loads garbage (from offset 0 of the minidump file - well that's not garbage, but it is not the stack memory region either) and attempts to walk it. A typical symptom of this issue is when you get a single stack frame after processing - the context frame - for which you don't need stack memory. This issue is caused by an invalid RVA in the memory descriptor stored inside the MINIDUMP_THREAD structure for the thread. Luckily, the invalid RVA is 0, and the start_of_memory_region appears to be correct, so this issue can be easily detected and the correct memory region can be loaded using an RVA specified in the MinidumpMemoryList. I couldn't find a reasonable description on MSDN regarding MINIDUMP_MEMORY_DESCRIPTOR.MINIDUMP_LOCATION_DESCRIPTOR having RVA of 0 except maybe for full dumps where the 64-bit version of the structure (MINIDUMP_MEMORY_DESCRIPTOR64) is used and it has no RVA at all. It has a 64-bit DataSize which if interpreted as the 32-bit structure will very likely result in 0 for the RVA: http://msdn.microsoft.com/en-us/library/windows/desktop/ms680384(v=vs.85).aspx Anyways, the dump that I looked at was not a full dump so 0 for RVA is a bit puzzling (at least easily detectable): ... Microsoft (R) Windows Debugger Version 6.2.9200.20512 X86 Copyright (c) Microsoft Corporation. All rights reserved. ... User Mini Dump File: Only registers, stack and portions of memory are available ... MINIDUMP_HEADER: Version A793 (62F0) NumberOfStreams 11 Flags 160 0020 MiniDumpWithUnloadedModules 0040 MiniDumpWithIndirectlyReferencedMemory 0100 MiniDumpWithProcessThreadData Review URL: https://breakpad.appspot.com/606002 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1194 4c0a9323-5329-0410-9bdc-e9ce6186880e
* More robust stack walks when the IP address in the context frame is invalid ↵ivan.penkov@gmail.com2013-06-264-103/+341
| | | | | | | | | | | | | (or not in a known module). This is achieved by: 1. Extending the span of the scan for return address in the conext frame. Initially, I wanted to extend the span of the scan for all frames but then I noticed that there is code for ARM already that is extending the search only for the context frame. This kind of makes sense so I decided to reuse the same idea everywhere. 2. Attempting to restore the EBP chain after a successful scan for return address so that the stackwalker can switch back to FRAME_TRUST_CFI for the rest of the frames when possible. I also fixed the lint errors in the files touched. Review URL: https://breakpad.appspot.com/605002 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1193 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Treat warnings as error and fix most level 4 warnings in the breakpad ↵ivan.penkov@gmail.com2013-06-041-44/+80
| | | | | | | | | | | windows client projects. Some of the lint errors in the files touched by this change were also fixed. BUG=533 Review URL: https://breakpad.appspot.com/601002 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1189 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Avoid gmock warning "Uninteresting mock function call"ted.mielczarek@gmail.com2013-05-174-0/+22
| | | | | | Patch by Michael Krebs <mkrebs@chromium.org>, R=me at https://breakpad.appspot.com/397002/ git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1183 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Compile issue when using global string "::string". For more details take a ↵ivan.penkov@gmail.com2013-05-111-2/+5
| | | | | | | | look at src/common/using_std_string.h. Review URL: https://breakpad.appspot.com/577002 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1181 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Make x86-64 stack walking work for Native Client minidumpsmseaborn@chromium.org2013-05-081-0/+11
| | | | | | | | | | | | | | For NaCl, a stack walker should ignore the top 32 bits of %rip, %rsp and %rbp, otherwise it will try to read from %r15-extended stack addresses and look up symbol info for %r15-extended code addresses, which will fail. BUG=https://code.google.com/p/nativeclient/issues/detail?id=3424 TEST=tested manually with a NaCl minidump Review URL: https://breakpad.appspot.com/591002 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1173 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Add MD_OS_NACL platform_id value for identifying NaCl minidumpsmseaborn@chromium.org2013-05-062-0/+10
| | | | | | | | | | | | | | Change minidump-2-core to accept minidumps with this platform_id value rather than rejecting them as non-Linux dumps. Add a missing "break" for a MD_OS_PS3 case. BUG= https://code.google.com/p/nativeclient/issues/detail?id=3424 TEST= tested with work-in-progress NaCl minidump generator Review URL: https://breakpad.appspot.com/590002 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1172 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Fix an "unused variable" compiler warning in exploitability_win.ccmseaborn@chromium.org2013-05-061-3/+0
| | | | | | | | | BUG=none TEST=compile with "-Wall -Werror" Review URL: https://breakpad.appspot.com/588003 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1171 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Add MD_OS_PS3 to breakpad and exception types.thestig@chromium.org2013-04-253-1/+89
| | | | | | | | | A=Jia Ji <jijia@google.com> Original review: https://breakpad.appspot.com/571002/ Review URL: https://breakpad.appspot.com/574002 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1165 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Improve ARM CPU info reporting.digit@chromium.org2013-04-242-0/+126
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch improves several things for Linux/ARM: - Better detection of the number of CPUs on the target device. The content of /proc/cpuinfo only matches the number of "online" CPUs, which varies over time with recent Android devices. - Reconstruct the CPUID and ELF hwcaps values from /proc/cpuinfo, this is useful to better identify target devices in minidumps. - Make minidump_dump display the new information in useful ways. - Write a small helper class to parse /proc/cpuinfo and also use it for x86/64. - Write a small helper class to parse sysfds cpu lists. - Add a my_memchr() implementation. - Add unit tests. Tested on a Nexus S (1 CPU), Galaxy Nexus (2 CPUs) and a Nexus 4 (4 CPUs). Review URL: https://breakpad.appspot.com/540003 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1160 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Cleanup: Remove duplicate wording in license headers.thestig@chromium.org2013-04-232-24/+4
| | | | | | | | BUG=505 Review URL: https://breakpad.appspot.com/498002 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1159 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Fix Bigcluster build error with minidump.cc after r1147.thestig@chromium.org2013-04-191-9/+14
| | | | | | | | | A=Jia Ji <jijia@google.com> Original review: https://breakpad.appspot.com/563002/ Review URL: https://breakpad.appspot.com/564003 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1156 4c0a9323-5329-0410-9bdc-e9ce6186880e
* minidump_stackwalk should display r12 in ARM stack tracested.mielczarek@gmail.com2013-04-171-0/+2
| | | | | | A=torne@google.com, R=ted, http://code.google.com/p/google-breakpad/issues/detail?id=456 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1151 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Don't print an error when a user-set max frames limit has been reached in ↵ted.mielczarek@gmail.com2013-04-161-1/+5
| | | | | | | | the stackwalker Patch by Julian Seward <jseward@acm.org>, R=ted at https://bugzilla.mozilla.org/show_bug.cgi?id=859745 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1150 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Add PPC64 support to breakpad processor.thestig@chromium.org2013-04-125-0/+362
| | | | | | | | A=Jia Ji <jijia@google.com> Original review: https://breakpad.appspot.com/557002/ Review URL: https://breakpad.appspot.com/558002 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1147 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Turn off verbose logging but keep logic for future reference for debug logging.jessicag.feedback2013-04-051-13/+23
| | | | git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1144 4c0a9323-5329-0410-9bdc-e9ce6186880e
* These are prerequisites needed for a wider effort inside Google to enablemark@chromium.org2013-04-031-1/+13
| | | | | | | | | | structured logging. This is basically wrapping std::ostream within a new type. No functional differences from this change are expected. Patch by Ivan Penkov <ivan.penkov@gmail.com> git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1140 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Keeping track of modules without symbols during crash report processing.ivan.penkov@gmail.com2013-03-068-48/+213
| | | | | | | | http://breakpad.appspot.com/534002/ git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1126 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Fix some more Win32 compat issues in processor codeted.mielczarek@gmail.com2013-03-066-3/+19
| | | | | | R=mark at https://breakpad.appspot.com/535003/ git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1122 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Use stdint types everywhereted.mielczarek@gmail.com2013-03-0657-662/+665
| | | | | | R=mark at https://breakpad.appspot.com/535002/ git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1121 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Work around Windows headers #defining ERROR by renaming enum values in ↵ted.mielczarek@gmail.com2013-03-042-14/+14
| | | | | | | | StackFrameSymbolizer Patch by Julian Seward <jseward@acm.org>, R=ted git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1120 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Remove unnecessary #include unistd.hted.mielczarek@gmail.com2013-03-011-1/+0
| | | | | | (no review, trivial change) git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1119 4c0a9323-5329-0410-9bdc-e9ce6186880e
* minidump_stackwalk: Show argument registers for ARM stack tracested.mielczarek@gmail.com2013-01-311-0/+11
| | | | | | Patch by Michael Krebs <mkrebs@chromium.org>, R=ted at https://breakpad.appspot.com/497002/ git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1108 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Print the correct return address, even on architectures where ↵jimblandy2013-01-225-30/+41
| | | | | | | | | StackFrame::instruction is offset. a=bruce.dawson, r=jimblandy git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1105 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Fix a couple of warnings in stack_frame_symbolizer codeted.mielczarek@gmail.com2013-01-181-0/+1
| | | | | | R=SiyangXie at https://breakpad.appspot.com/509003/ git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1097 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Move scoped_ptr.h to commonted.mielczarek@gmail.com2013-01-1722-359/+23
| | | | | | R=mark at https://breakpad.appspot.com/509002/ git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1096 4c0a9323-5329-0410-9bdc-e9ce6186880e
* The Google-breakpad processor rejects (ignores) context records that lack ↵ivan.penkov@gmail.com2012-12-084-4/+242
| | | | | | | | | | | | CPU type information in their context_flags fields. Such context records can be valid (e.g. contexts captured by ::RtlCaptureContext). http://code.google.com/p/google-breakpad/issues/detail?id=493 http://breakpad.appspot.com/500002/ git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1088 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Allow StackwalkerARM to scan much farther to find the caller of the context ↵ted.mielczarek@gmail.com2012-12-043-1/+66
| | | | | | | | frame R=jimb at https://breakpad.appspot.com/501002/ git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1086 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Cleaning up google-breakpad source code of signed-unsigned comparison warningsivan.penkov@gmail.com2012-11-2111-91/+91
| | | | | | | | http://breakpad.appspot.com/488002/ git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1083 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Allow processing dumps with missing stack memory for some threadsted.mielczarek@gmail.com2012-11-0614-41/+360
| | | | | | r=mkrebs at https://breakpad.appspot.com/413002/ git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1077 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Wrong %ebp after skipping a frame for which the instruction pointer is not ↵ivan.penkov@gmail.com2012-11-022-25/+269
| | | | | | | | | | in a known module. http://breakpad.appspot.com/494002/ git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1076 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Fix a compile warning in stack_frame_symbolizer.ccSiyangXie@gmail.com2012-11-011-0/+4
| | | | | | | http://breakpad.appspot.com/493002/ git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1074 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Check-in stack_frame_symbolizer.[h|cc] that were missing in r1068.SiyangXie@gmail.com2012-10-111-0/+128
| | | | | | | http://breakpad.appspot.com/484002/ git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1069 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Refactor the logic of resolving source line info into helper class.SiyangXie@gmail.com2012-10-1015-290/+285
| | | | | | | http://breakpad.appspot.com/459002/ git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1068 4c0a9323-5329-0410-9bdc-e9ce6186880e
* processor: add arm exception flagsqsr@chromium.org2012-09-251-13/+66
| | | | | | | | | | | | From inspection of Apple headers and https://llvm.org/svn/llvm-project/lldb/trunk/source/Plugins/Process/Utility/StopInfoMachException.cpp Review: https://breakpad.appspot.com/457003/ Patch by: jaysoffian@gmail.com git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1048 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Allow generating minidumps from live process on Linux via ExceptionHandlerted.mielczarek@gmail.com2012-09-181-0/+3
| | | | | | | Original patch by Chris Jones <jones.chris.g@gmail.com> at https://bugzilla.mozilla.org/show_bug.cgi?id=544936 and https://bugzilla.mozilla.org/show_bug.cgi?id=555309 R=mark at https://breakpad.appspot.com/449003/ git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1043 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Add a GetInstructionPointer method to MinidumpExceptionted.mielczarek@gmail.com2012-09-172-2/+43
| | | | | | R=mark at https://breakpad.appspot.com/444003/ git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1039 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Fix processor to build with clangted.mielczarek@gmail.com2012-09-101-1/+1
| | | | | | R=mark at http://breakpad.appspot.com/451002 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1035 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Fix compiler warnings on Ubuntu Precise. Pull in gmock r408 in the process.thestig@chromium.org2012-09-101-51/+50
| | | | | | | BUG=490 Review URL: https://breakpad.appspot.com/448002 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1034 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Move minidump_extension_linux.h contents into minidump_format.hted.mielczarek2012-07-201-1/+0
| | | | | | R=mark at https://breakpad.appspot.com/415002/ git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@991 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Add MD_OS_ANDROID definition.digit@chromium.org2012-07-043-0/+12
| | | | | | | | | | | In order to better distinguish Android and Linux minidumps, introduce a new MD_OS_ANDROID definition, and modify related source code accordingly. Also append the build-fingerprint to the minidump location descriptor. This gives more information about the system image the device runs on. Review URL: https://breakpad.appspot.com/405002 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@981 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Fixing various compiler warnings and applying minor tweaks to allow running ofivan.penkov@gmail.com2012-07-022-62/+68
| | | | | | | | | | the mojority of breakpad unittests in Google. http://breakpad.appspot.com/399002/ git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@978 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Fixing a mem leak in test codeivan.penkov@gmail.com2012-06-294-9/+26
| | | | git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@975 4c0a9323-5329-0410-9bdc-e9ce6186880e
* This change allows compiling the google-breakpad code using a global ↵ivan.penkov@gmail.com2012-06-2831-79/+95
| | | | | | ::string class instead of std::string. For more details take a look at common/using_std_string.h git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@974 4c0a9323-5329-0410-9bdc-e9ce6186880e
* This is a fix for a stackwalker_x86 issue which has toivan.penkov@gmail.com2012-06-128-306/+559
| | | | | | | | | | do with FPO (frame-pointer-omission) optimized context frames where the context frame represents a Windows System call stub. git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@971 4c0a9323-5329-0410-9bdc-e9ce6186880e
* In the AMD64 stackwalker, use heuristics to provide %rbp more often, asjimblandy2012-04-252-14/+110
| | | | | | | | | | subsequent frames are usually unable to use CFI if they don't have an %rbp value. a=mrmiller, r=jimb git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@960 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Fix GetMainModule() to properly get first modulemkrebs@chromium.org2012-03-301-1/+1
| | | | | | | | | | | | | | | Change MinidumpModuleList::GetMainModule() to use GetModuleAtIndex() instead of GetModuleAtSequence() because the former gets the first module that was in the minidump file, while the latter actually gets the first module when sorted by address. While this is pretty much the same thing at the moment, I have another change in the works that can sometimes affect the module order in the file. BUG=chromium-os:25355 TEST=Ran Breakpad tests Review URL: https://breakpad.appspot.com/366001 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@941 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Fix memory leak in DisassemblerX86.benchan@chromium.org2012-03-301-0/+3
| | | | | | | | | | | | A memory leak in DisassemblerX86 is detected by valgrind. This patch fixes the DisassemblerX86 destructor to properly free the |current_instr_| variable. BUG=471 TEST=Run valgrind on disassembler_x86_unittest to verify the leak is gone. Review URL: https://breakpad.appspot.com/371001 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@940 4c0a9323-5329-0410-9bdc-e9ce6186880e