aboutsummaryrefslogtreecommitdiff
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
* Fix dump_syms unit tests on Windows.Nelson Billing2019-03-186-317/+317
| | | | | | | | | | | | | | | - Baselines appeared to be stale. dump_syms now prints FUNC entries with the full function signature, whereas the baselines only contained the function name. The current state of the symbol file docs (https://chromium.googlesource.com/breakpad/breakpad/+/refs/heads/master/docs/symbol_files.md) seem to agree with the new FUNC entries rather than the old ones. Example of a name given in current docs: "nsQueryInterfaceWithError::operator()(nsID const&, void**) const". Change-Id: I9e01354cd82b7184b7cba31d132603e949a657ac Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/1529133 Reviewed-by: Ivan Penkov <ivanpe@chromium.org>
* linux_core_dumper: handle missing SIGSYS supportMike Frysinger2019-03-142-0/+8
| | | | | | | | | | | | If the kernel/C library headers are old, they might not have the fields needed for SIGSYS decoding. Add ifdef checks for that and skip the logic entirely. Easier than adding arch-specific siginfo structs to the codebase. Bug: google-breakpad:791 Change-Id: Ia473e3ffa61fce4c42cf4c1e73a9df044599bc5c Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/1524447 Reviewed-by: Mark Mentovai <mark@chromium.org>
* linux_core_dumper: support setting exception_informationMike Frysinger2019-03-124-1/+76
| | | | | | | | | | | | | | Many signals in Linux support additional metadata on a per-signal basis. We can extract that from NT_SIGINFO and pass it through in the exception_information fields. The current core dumper logic doesn't set exception_information at all, so this is an improvement. Bug: google-breakpad:791 Change-Id: I38b78d6494e9bc682441750d98ac9be5b0656f5a Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/1497662 Reviewed-by: Mark Mentovai <mark@chromium.org>
* linux_core_dumper: add a fallback definition for NT_SIGINFOMike Frysinger2019-03-072-0/+6
| | | | | | | | | | When building on an old system with outdated headers, this define might not be available. Add a fallback to our existing elf header. Bug: google-breakpad:790 Change-Id: I4dfe7a5cebd414cca3582a1a9cfc983503d5a779 Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/1507073 Reviewed-by: Mark Mentovai <mark@chromium.org>
* core2md: write error message with perrorMike Frysinger2019-03-041-1/+1
| | | | | | | | | | | | | | | | The current failure message omits the underlying errno. This can make diagnosing failures a bit difficult unless you run everything through strace. For example: $ core2md core /proc/self md $ core2md core /proc/self md Unable to generate minidump Now we get the errno details: Unable to generate minidump: File exists Change-Id: I67f30879868ce4a726d5d888ee8c0a4a316b5186 Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/1497660 Reviewed-by: Ted Mielczarek <ted.mielczarek@gmail.com>
* linux_core_dumper: support NT_SIGINFO for reading crashing addressMike Frysinger2019-03-031-0/+23
| | | | | | | | | | | | | | | | | | | | | | | | | The current core dumper only parses NT_PRSTATUS notes. With signal details, this note only includes three fields: signo, code, and errno. We set exception_code to signo and exception_flag to code. The errno value isn't set by the kernel, so there's no need to save it. However, we never fill in exception_address which means all converted crashes look like they happen at address 0. This implies a NULL jump which is usually not the case, so it's just confusing. The prstatus structure doesn't offer anything directly that tracks this. Starting with linux-3.7, the kernel writes out the full siginfo structure in the NT_SIGINFO note. So lets support that to pull out si_addr which, for a bunch of common signals, is the value we want in exception_address. The size of the siginfo_t structure should be locked to 128 bytes at build time for all architectures, so this should hopefully be stable. Bug: google-breakpad:790 Change-Id: I458bad4787b1a8b73fad8fe068e9f23bec957599 Reviewed-on: https://chromium-review.googlesource.com/c/1497661 Reviewed-by: Mark Mentovai <mark@chromium.org>
* Replace TYPED_TEST_CASE with TYPED_TEST_SUITE.Lei Zhang2019-02-283-3/+3
| | | | | | | | | | TYPED_TEST_CASE is deprecated in modern googletest. BUG=chromium:936654 Change-Id: I08004ffbb26089ebe17302934ed6d3268220d151 Reviewed-on: https://chromium-review.googlesource.com/c/1493423 Reviewed-by: Mark Mentovai <mark@chromium.org>
* breakpad: Remove semicolons, iOS edition.Nico Weber2019-02-252-2/+2
| | | | | | | Bug: chromium:926235 Change-Id: I237e7b7d89e5746beea80754675a232c881f25f6 Reviewed-on: https://chromium-review.googlesource.com/c/1487336 Reviewed-by: Mark Mentovai <mark@chromium.org>
* breakpad: Remove semicolons, mac edition.Nico Weber2019-02-226-8/+8
| | | | | | | Bug: chromium:926235 Change-Id: I473a7727c1831717b92a582c50d98256ea41d854 Reviewed-on: https://chromium-review.googlesource.com/c/1482716 Reviewed-by: Mark Mentovai <mark@chromium.org>
* breakpad: Remove semicolons.Nico Weber2019-02-212-2/+2
| | | | | | | Bug: chromium:926235 Change-Id: I7f0795ebd651303b6f7fb6981c2f639e17a536bb Reviewed-on: https://chromium-review.googlesource.com/c/1481232 Reviewed-by: Mark Mentovai <mark@chromium.org>
* Delete deprecated SetFirstChanceExceptionHandler functionAndreas Haas2019-02-193-38/+0
| | | | | | | | | | | | | | | This CL removes the code I marked as deprecated in https://crrev.com/c/1411776. I could not delete the code in that CL before I removed all uses in Chrome in https://crrev.com/c/1411643. The tracking bug contains more information. R=mark@chromium.org Bug: chromium:921971 Change-Id: I77597826ef6e69a13ece529a5d24702bc72aa436 Reviewed-on: https://chromium-review.googlesource.com/c/1412353 Reviewed-by: Mark Mentovai <mark@chromium.org>
* Always emit a 32-bit crash address for 32-bit architecturesGabriele Svelto2019-01-303-8/+56
| | | | | | | | | | | | | | Certain minidumps for 32-bit crashes have the upper 32-bit of the crash address (which is a 64-bit value) set to non-zero values. This caused a crash address with more than 32-bits to be printed out for minidumps of 32-bit architectures. This patch masks out those bits when reading the raw minidump data to ensure this doesn't happen anymore. Bug: google-breakpad:783 Change-Id: Ieef6dff759fd0ee2efc47c4c4a3cf863a48f0659 Reviewed-on: https://chromium-review.googlesource.com/c/1427819 Reviewed-by: Ted Mielczarek <ted.mielczarek@gmail.com>
* Make the minidump processor correctly populate the CPU information string ↵Gabriele Svelto2019-01-301-0/+1
| | | | | | | | | | | | | | for Microsoft-style ARM64 minidumps This affects the output of tools like minidump_stackwalk which currently print out the hexadecimal representation of the architecture instead of the "arm64" string. BUG=780 Change-Id: Id1d9d65fa5f3509c8c6580e2e3042f7d682b52be Reviewed-on: https://chromium-review.googlesource.com/c/1412004 Reviewed-by: Mike Frysinger <vapier@chromium.org>
* Introduce SetFirstChanceHandler with more strict signatureAndreas Haas2019-01-153-3/+40
| | | | | | | | | | | | | | | | | | | Eventually, I want to remove the current version of SetFirstChanceHandler. That is why I changed the name of the current callback type to FirstChanceHandlerDeprecated. I also made sure that it is not possible to have two different FirstChanceHandlers set at the same time. This is the first of a set of CLs to clean up the API between Chrome, BreakPad, and V8. See more information in the tracking bug. R=mark@chromium.org Bug: chromium:921971 Change-Id: Ia8c2fd9bd875c36dd7ae8bb4a02e538556bc67a1 Reviewed-on: https://chromium-review.googlesource.com/c/1411776 Reviewed-by: Mark Mentovai <mark@chromium.org>
* Extract intruction pointer correctly for Windows ARM64Tom Tan2019-01-031-1/+3
| | | | | | | Bug: 893460 Change-Id: Ibbdf734e72c29c4779b6a701dceec1626056a9ba Reviewed-on: https://chromium-review.googlesource.com/c/1393763 Reviewed-by: Joshua Peraza <jperaza@chromium.org>
* Conditionally define BPLOG_LAZY_STREAMJoshua Peraza2018-11-271-0/+2
| | | | | | | | This allows BPLOG_LAZY_STREAM to be overridden by BP_LOGGING_INCLUDE Change-Id: I5c9ec19b619ad5db9e97f3a1813b0f965a357b38 Reviewed-on: https://chromium-review.googlesource.com/c/1351361 Reviewed-by: Ivan Penkov <ivanpe@chromium.org>
* Add mac dump_syms support for arm64eJoshua Peraza2018-11-263-4/+45
| | | | | | Change-Id: I6a25b47d4fc5e42ff9fa30107b563dcf1d51c0d1 Reviewed-on: https://chromium-review.googlesource.com/c/1351352 Reviewed-by: Mark Mentovai <mark@chromium.org>
* fix dump_syms xcode projectJoshua Peraza2018-11-261-0/+10
| | | | | | | | | | dwarf_range_list_handler.{cc,h} were added in 16e08520. Default to building with c++11. Change-Id: Iceb29ab665260a9e71a30920fdfb5623d10a9cfa Reviewed-on: https://chromium-review.googlesource.com/c/1351351 Reviewed-by: Mark Mentovai <mark@chromium.org>
* Skip empty DWARF code range when mapping linesLudovic Guegan2018-11-211-3/+6
| | | | | | | | BUG=777 Change-Id: Ic6d05eee3ff4660b6d087999a8cea04a1ee3e92b Reviewed-on: https://chromium-review.googlesource.com/c/1333507 Reviewed-by: Ted Mielczarek <ted.mielczarek@gmail.com>
* Conditionally define BPLOG_IFJoshua Peraza2018-10-121-0/+2
| | | | | | | | This allows BPLOG_IF to be overriden by defines in BP_LOGGING_INCLUDE. Change-Id: Ic6e8373476cc4d1f73d55e13a23686a2c8309fdc Reviewed-on: https://chromium-review.googlesource.com/c/1278104 Reviewed-by: Ivan Penkov <ivanpe@chromium.org>
* Adds method to get the date of the most recent iOS crash report.Evan Bernstein2018-10-084-0/+63
| | | | | | | | Also adds method to determine if breakpad is started. Change-Id: I272765e7ac6bbc07d77ca2d8dcc34d51c205116e Reviewed-on: https://chromium-review.googlesource.com/c/1260625 Reviewed-by: Joshua Peraza <jperaza@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>
* win: fix formatting after 21c98747Joshua Peraza2018-08-271-1/+1
| | | | | | Change-Id: If50c3563fec7a8a9edf05c22f7d157201184df38 Reviewed-on: https://chromium-review.googlesource.com/1191671 Reviewed-by: Mike Frysinger <vapier@chromium.org>
* win: replace a while loop with a for loopJoshua Peraza2018-08-271-1/+1
| | | | | | | | | This is the recommended resolution to warning C4127. https://msdn.microsoft.com/en-us/library/6t66728h.aspx Change-Id: Ifcffe68e21d9a6383bb9aef07503cbb034caca19 Reviewed-on: https://chromium-review.googlesource.com/1191661 Reviewed-by: Ivan Penkov <ivanpe@chromium.org>
* Fix debug build after 16e0852Joshua Peraza2018-08-182-7/+6
| | | | | | | | Also remove ranges_handler_ which is unused. Change-Id: I771bf4b5fc4410f0406bf26e1e405905b55389ab Reviewed-on: https://chromium-review.googlesource.com/1180587 Reviewed-by: Mark Mentovai <mark@chromium.org>
* Make a parameter a const referenceJoshua Peraza2018-08-171-1/+1
| | | | | | Change-Id: I7d232dd9be3a03b5bd9f1d46c307d080fadf9116 Reviewed-on: https://chromium-review.googlesource.com/1179978 Reviewed-by: Mark Mentovai <mark@chromium.org>
* Treat high_pc as an address for DW_FORM_GNU_addr_indexJoshua Peraza2018-08-171-1/+2
| | | | | | | | | | The high_pc is an address and has already been read from .debug_addr before being passed into FuncHandler::ProcessAttributeUnsigned. Bug:870908 Change-Id: I950098e360b5193f26bf767b8fa0a5f9d59e66ce Reviewed-on: https://chromium-review.googlesource.com/1178760 Reviewed-by: Mark Mentovai <mark@chromium.org>
* Fix Windows client_tests GYP build after 88d8114fda3eMark Mentovai2018-08-151-0/+1
| | | | | | | | Bug: google-breakpad:770 Change-Id: I5539cda6053c39a11c354fba7f3e689ae02d3019 Reviewed-on: https://chromium-review.googlesource.com/1176126 Reviewed-by: Joshua Peraza <jperaza@chromium.org> Reviewed-by: Mike Frysinger <vapier@chromium.org>
* Fixed a typo introduced in revision 16e08520e6027df4bf1934abbfd5e1a088ffb69cGabriele Svelto2018-08-141-1/+1
| | | | | | | | BUG=769 Change-Id: I1e118fe31b4a4031275b8b49c4c1eb98745ce21a Reviewed-on: https://chromium-review.googlesource.com/1174571 Reviewed-by: Ted Mielczarek <ted.mielczarek@gmail.com>
* Add support for parsing the DW_AT_ranges attributesGabriele Svelto2018-08-1317-111/+577
| | | | | | | | | | | | | | | | This enables the DWARF reader to properly parse DW_AT_ranges attributes in compilation units and functions. Code covered by a function is now represented by a vector of ranges instead of a single contiguous range and DW_AT_ranges entries are used to populate it. All the code and tests that assumed functions to be contiguous entities has been updated to reflect the change. DW_AT_ranges attributes found in compilation units are parsed but no data is generated for them as it is not currently needed. BUG=754 Change-Id: I310391b525aaba0dd329f1e3187486f2e0c6d442 Reviewed-on: https://chromium-review.googlesource.com/1124721 Reviewed-by: Ted Mielczarek <ted.mielczarek@gmail.com>
* 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>
* processor: Fix memory leak after 88d8114fJoshua Peraza2018-08-021-0/+4
| | | | | | | | | This was mistakenly deleted in https://chromium-review.googlesource.com/c/breakpad/breakpad/+/1155938/12 Change-Id: I95e5d84b36e2f89a7a364ee278ccb128b7d34b50 Reviewed-on: https://chromium-review.googlesource.com/1159525 Reviewed-by: Mark Mentovai <mark@chromium.org>
* Define and use a a new MDRawContextARM64Joshua Peraza2018-08-0119-51/+325
| | | | | | | | | | | 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-0120-71/+71
| | | | | | | | | | 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>
* mac: Fix broken xcode projectsJoshua Peraza2018-07-313-162/+169
| | | | | | Change-Id: I1cd8f0b0224c9b629dda720c11f6c081b175f8bd Reviewed-on: https://chromium-review.googlesource.com/1157121 Reviewed-by: Mark Mentovai <mark@chromium.org>
* Add path_helper.cc and path_helper.h to dump_syms.xcodeproj.Ivan Penkov2018-07-241-0/+6
| | | | | | | | | | | Fixes a build break of dump_syms with Xcode. Patch provided by Hiroyuki Komatsu. Change-Id: I3bd3772060afee9f78dc99c75cd94f96a56c7617 Reviewed-on: https://chromium-review.googlesource.com/1144604 Reviewed-by: Joshua Peraza <jperaza@chromium.org> Reviewed-by: Mark Mentovai <mark@chromium.org>
* ios: Fix build of exception_handler_no_machJoshua Peraza2018-07-091-1/+1
| | | | | | Change-Id: I2a9f85e78f6d3189f018824ad98e39af30d2ecf8 Reviewed-on: https://chromium-review.googlesource.com/1129465 Reviewed-by: Ivan Penkov <ivanpe@chromium.org>
* Use hash_map and hash_set from __gnu_cxxJoshua Peraza2018-07-091-2/+2
| | | | | | Change-Id: Ia8521e5cfd8424c5dec247503532454eb8806c48 Reviewed-on: https://chromium-review.googlesource.com/1129203 Reviewed-by: Ivan Penkov <ivanpe@chromium.org>
* iOS: disable using CFI in stackwalkingJoshua Peraza2018-07-062-6/+15
| | | | | | | | | | | dump_syms produces incomplete CFI info on iOS because it doesn't support converting compact unwind to Breakpad symbols. Attempting to use incomplete CFI can result in infinte stack traces. Bug: google-breakpad:764 Change-Id: Id042aa515d17928cb5503a79038607d95c56238d Reviewed-on: https://chromium-review.googlesource.com/1128252 Reviewed-by: Ivan Penkov <ivanpe@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-282-5/+10
| | | | | | 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-282-48/+60
| | | | | | | | 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>
* Fall back to the raw symbol name from DW_AT_MIPS_linkage_name when there is ↵Mike Hommey2018-06-191-0/+7
| | | | | | | | | | | | | | | | nothing else When DW_AT_MIPS_linkage_name doesn't demangle, breakpad currently throws the symbol completely, but in some cases, there is no DW_AT_name or DW_AT_abstract_origin to figure out a name, and the raw value from DW_AT_MIPS_linkage_name is still better than nothing. Fall back to that in when there is nothing else. R=ted@mielczarek.org Change-Id: I5cc7580244f2b99f5f1f279d09b904031cae1a37 Reviewed-on: https://chromium-review.googlesource.com/1082176 Reviewed-by: Ted Mielczarek <ted.mielczarek@gmail.com>
* Avoid endl when writing symbol filesAaron Dierking2018-05-301-9/+8
| | | | | | | | | | endl flushes output after each line. Using "\n" instead significantly improves I/O efficiency. Change-Id: If6a5549fc3613ca3a7c9a71838ec36c5b7a20580 Reviewed-on: https://chromium-review.googlesource.com/1077626 Reviewed-by: Ivan Penkov <ivanpe@chromium.org> Reviewed-by: Lei Zhang <thestig@chromium.org>
* Add SEVERITY_CRITICAL to logging, that would help to suppress logs from the ↵Max Moroz2018-05-292-1/+14
| | | | | | | | | | | fuzz target. Follow-up CL will be https://chromium-review.googlesource.com/c/chromium/src/+/1073395 Bug: 846721 Change-Id: Ie9e6dc5c5ef6b035c414fbdc4f711f995b52f4d7 Reviewed-on: https://chromium-review.googlesource.com/1073394 Reviewed-by: Will Harris <wfh@chromium.org>
* Read Linux si_code in minidump_processor.Lei Zhang2018-04-132-4/+143
| | | | | | | | For common signals: SIGILL, SIGFPE, SIGSEGV, and SIGBUS. Change-Id: I80048f70445c3fa6accd548704c5700b3bed12a4 Reviewed-on: https://chromium-review.googlesource.com/1012589 Reviewed-by: Robert Sesek <rsesek@chromium.org>
* Initialize variables for MSANSergey Abbakumov2018-04-102-2/+2
| | | | | | | | | | The variables in the CL are not initialized. Even if it's safe not to initialize them here, MSAN doesn't know that. Bug: 394028 Change-Id: I597a7d76aa19d5789decd0f85150fa31c9655269 Reviewed-on: https://chromium-review.googlesource.com/1001573 Reviewed-by: Lei Zhang <thestig@chromium.org>
* Linux: Write out si_code for SIGBUS exceptions.Lei Zhang2018-04-035-11/+26
| | | | | | | | | Store the information in the exception record's exception_information field. Change-Id: Ie215cae2f070fdab63c3d05cc1bc4fb4b7b095fa Reviewed-on: https://chromium-review.googlesource.com/990799 Reviewed-by: Mark Mentovai <mark@chromium.org>
* Add missing header for free functionTakuto Ikuta2018-03-271-0/+1
| | | | | | Change-Id: I8ff2dcb546849493f2883777895341e043e44fb3 Reviewed-on: https://chromium-review.googlesource.com/981965 Reviewed-by: Mark Mentovai <mark@chromium.org>