aboutsummaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* exploitability_unittest: fix warningsMike Frysinger2016-01-211-7/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The std::getline function always returns its first arg (which is an iostream object) and cannot return anything else. Thus, testing its value is pointless, and even leads to build errors w/at least gcc-5 due to gtest ASSERT_TRUE funcs only taking bool types: .../exploitability_unittest.cc: In member function 'virtual void {anonymous}::ExploitabilityLinuxUtilsTest_DisassembleBytesTest_Test::TestBody()': .../exploitability_unittest.cc:200:136: error: no matching function for call to 'testing::AssertionResult::AssertionResult(std::basic_istream<char>&)' In file included from .../breakpad_googletest_includes.h:33:0, from .../exploitability_unittest.cc:35: .../gtest.h:262:12: note: candidate: testing::AssertionResult::AssertionResult(bool) Since we know this never fails, simply drop the ASSERT_TRUE usage. The next line already checks the content of the buffer we read. Further on in the file, we hit some signed warnings: In file included from .../breakpad_googletest_includes.h:33:0, from .../exploitability_unittest.cc:35: .../gtest.h: In instantiation of 'testing::AssertionResult testing::internal::CmpHelperEQ(const char*, const char*, const T1&, const T2&) [with T1 = long unsigned int; T2 = int]': .../gtest.h:1484:23: required from 'static testing::AssertionResult testing::internal::EqHelper<lhs_is_null_literal>::Compare(const char*, const char*, const T1&, const T2&) [with T1 = long unsigned int; T2 = int; bool lhs_is_null_literal = false]' .../exploitability_unittest.cc:241:289: required from here .../gtest.h:1448:16: error: comparison between signed and unsigned integer expressions [-Werror=sign-compare] if (expected == actual) { This is because we compare the register value (a uint64_t) directly to an integer constant, and those are signed by default. Stick a U suffix on them to fix things up. BUG=chromium:579384 TEST=`make check` passes R=ivanpe@chromium.org Review URL: https://codereview.chromium.org/1611763002 .
* Fix usage of snprintf for MSVCPavel Labath2016-01-197-17/+50
| | | | | | | | | | | | | | 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>.
* breakpad: fix unittest failure when building with clang.Mike Frysinger2016-01-151-1/+1
| | | | | | | | | | | | | | | In C/C++, the result of signed integer overflow is undefined. The expression "base + size - 1" is parsed as "(base + size) - 1", and "base + size" can overflow even if "base + (size - 1)" <= INT_MAX. See http://g/c-compiler-chrome/461JohPKakE/JI3rEBg6FwAJ for more. BUG=None TEST='CC=clang CXX=clang++ ./configure && make check' R=vapier@chromium.org Review URL: https://codereview.chromium.org/1591793002 .
* README: add more links to breakpad sitesMike Frysinger2016-01-141-4/+6
| | | | | | R=andybons@chromium.org Review URL: https://codereview.chromium.org/1583163003 .
* Move core2md objects to libbreakpad_client.aMike Frysinger2016-01-132-20/+21
| | | | | | | | | This CL exports LinuxCoreDumper and ElfCoreDump in the client library. The ARC collector, which is an alternative to core2md optimized for large core dumps, needs these symbols for core dump parsing and conversion to minidump. BUG=http://b/25773929 TEST=nm src/client/linux/libbreakpad_client.a | grep LinuxCoreDumper Review URL: https://codereview.chromium.org/1576053002 .
* libdisasm: Remove inclusion of windows.hPavel Labath2016-01-121-4/+0
| | | | | | | | | | | | | | windows.h defines exception_code as a macro, which conflicts with our use of the identifier in exception records. It appears that this particular include of windows.h is not needed, so instead of undefining the macro, I simply delete the include. Build tested with MSVC 2013. BUG= R=mark@chromium.org Review URL: https://codereview.chromium.org/1579623004 . Patch from Pavel Labath <labath@google.com>.
* Define intptr and uintptr in a more generic wayPavel Labath2016-01-111-6/+2
| | | | | | | | | | | | | MSVC does not have the __PTRDIFF_TYPE__ macro defined, so I use the standard [u]intptr_t types instead. Compilation tested on windows, linux and mac. BUG= R=mark@chromium.org Review URL: https://codereview.chromium.org/1571293003 . Patch from Pavel Labath <labath@google.com>.
* libdisasm: Don't depend on sizeof(void)Pavel Labath2016-01-081-3/+3
| | | | | | | | | | | | | Due to operator precedence, the address was first cast to void* and then incremented, which resulted in an error on windows, as sizeof(void) is undefined and MSVC takes this seriously. Changing the precedence to perform the addition first. R=mark@chromium.org Review URL: https://codereview.chromium.org/1570843002 . Patch from Pavel Labath <labath@google.com>.
* disassembler_x86: Remove unused includePavel Labath2016-01-081-1/+0
| | | | | | | | | | | | | This file is not present on windows, and it's causing build errors there. As far as I can tell, nothing in this file actually uses that include, so I just remove it. BUG= R=mark@chromium.org Review URL: https://codereview.chromium.org/1475353002 . Patch from Pavel Labath <labath@google.com>.
* Fix compilation of breakpad on Linux.Sylvain Defresne2016-01-081-2/+2
| | | | | | | | | Fix some copy/paste errors from commit 41440eaa. BUG=None R=thestig@chromium.org Review URL: https://codereview.chromium.org/1564293002 .
* Check for C++11 support in the configure script.Lei Zhang2016-01-083-5/+1289
| | | | | | R=mark@chromium.org Review URL: https://codereview.chromium.org/1570013002 .
* Fix deprecatation warning when building for recent SDKs on iOS/OS X.Sylvain Defresne2016-01-072-10/+62
| | | | | | | | | | | | | | | | | | | | | | | | Fixes the following compilation warning when using recent version of the iOS or OS X SDK by using the recommended new API: ../../breakpad/src/common/mac/HTTPMultipartUpload.m:56:10: error: 'stringByAddingPercentEscapesUsingEncoding:' is deprecated: first deprecated in iOS 9.0 - Use -stringByAddingPercentEncodingWithAllowedCharacters: instead, which always uses the recommended UTF-8 encoding, and which encodes for a specific URL component or subcomponent since each URL component or subcomponent has different rules for what characters are valid. [-Werror,-Wdeprecated-declarations] [key stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; ^ CFURLCreateStringByAddingPercentEscapes ../../breakpad/src/common/mac/HTTPMultipartUpload.m:207:29: error: 'sendSynchronousRequest:returningResponse:error:' is deprecated: first deprecated in iOS 9.0 - Use [NSURLSession dataTaskWithRequest:completionHandler:] (see NSURLSession.h [-Werror,-Wdeprecated-declarations] data = [NSURLConnection sendSynchronousRequest:req ^ ../../breakpad/src/client/mac/handler/minidump_generator.cc:158:6: error: 'CFPropertyListCreateFromXMLData' is deprecated: first deprecated in iOS 8.0 - Use CFPropertyListCreateWithData instead. [-Werror,-Wdeprecated-declarations] (CFPropertyListCreateFromXMLData(NULL, data, kCFPropertyListImmutable, ^ BUG=https://bugs.chromium.org/p/google-breakpad/issues/detail?id=675 BUG=569158 R=mark@chromium.org Review URL: https://codereview.chromium.org/1563223004 .
* Use range-based for loops in linux/minidump_writer/minidump_writer.cc.Lei Zhang2016-01-071-45/+32
| | | | | | | | Also fix lint errors. R=mark@chromium.org Review URL: https://codereview.chromium.org/1562273002 .
* switch to git for external projectsMike Frysinger2016-01-061-5/+13
| | | | | | | | | | | | | Now that all the projects we care about use git and have repos available, switch to them and away from the old googlecode svn repos. TEST=`gclient sync` migrated svn->git fine TEST=`make check` still passes TEST=manual `diff -ur` on the new/old repos shows same content BUG= R=thestig@chromium.org Review URL: https://codereview.chromium.org/1560913002 .
* Avoid comparing size_t to be < 0 on AArch64.Lei Zhang2016-01-061-2/+2
| | | | | | | | | | | | cpu_features_entries is empty on AArch64 and causes tautological-compare warning when compiling with Clang. A=dskiba@google.com Original Review: https://codereview.chromium.org/1562223002/ BUG=chromium:539781 Review URL: https://codereview.chromium.org/1566893002 .
* Make minidump-2-core.cc build with -Wformat.Lei Zhang2016-01-062-1/+7
| | | | | | | | | | A=thakis@chromium.org BUG=chromium:574817 Original Review: https://codereview.chromium.org/1562983002/ R=thakis@chromium.org Review URL: https://codereview.chromium.org/1563043002 .
* Fix -Wunused-function warnings in ASAN builds.Lei Zhang2015-12-301-6/+2
| | | | | | | | A=thakis@chromium.org BUG=chromium:573250 Original Review: https://codereview.chromium.org/1551963002/ Review URL: https://codereview.chromium.org/1551983002 .
* Let breakpad build with -Wall on OS X and Linux.Lei Zhang2015-12-299-29/+14
| | | | | | | | | A=thakis@chromium.org Original Review: https://codereview.chromium.org/1550933002/ R=thakis@chromium.org Review URL: https://codereview.chromium.org/1554613002 .
* Remove use of deprecated CFURLCreateDataAndPropertiesFromResource function.Ivan Penkov2015-12-181-12/+19
| | | | | | | | | Patch by Scott Hancher BUG= R=mark@chromium.org Review URL: https://codereview.chromium.org/1527363003 .
* Fix ExploitabilityLinuxUtilsTest::DisassembleBytesTest to not fail when temp ↵Ted Mielczarek2015-11-301-1/+3
| | | | | | | | | file ends with 0 R=ivanpe@chromium.org BUG=https://bugs.chromium.org/p/google-breakpad/issues/detail?id=668 Review URL: https://codereview.chromium.org/1482363003 .
* Rename src/tools/mac/dump_syms binary to dump_syms_mac in autotools build to ↵Ted Mielczarek2015-11-252-265/+265
| | | | | | | | fix make install R=mark@chromium.org Review URL: https://codereview.chromium.org/1474673004 .
* dump_syms: add a -v flagMike Frysinger2015-11-111-1/+16
| | | | | | | | | | | | dump_syms generates a lot of warnings. This CL puts logging behind a command line flag URL=https://android-review.googlesource.com/181558 BUG=b:25460551 BUG=google-breakpad:441 R=mark@chromium.org Review URL: https://codereview.chromium.org/1437763002 .
* build: detect the right `ar` toolMike Frysinger2015-11-115-6/+511
| | | | | | | | | | | Use automake's AM_PROG_AR helper instead of the default of hardcoding `ar` all the time. When cross-compiling, this can often be the wrong one to use. BUG=google-breakpad:519 R=ted.mielczarek@gmail.com Review URL: https://codereview.chromium.org/1435813002 .
* gitignore: add mac/dump_symsMike Frysinger2015-11-111-0/+1
| | | | BUG=google-breakpad:670
* autotools: refresh config.{sub,guess}Mike Frysinger2015-11-112-8/+17
|
* Don't include libdisasm.a in libbreakpad.aMike Frysinger2015-11-112-4/+1
| | | | | | | | | | | | | | libbreakpad.a pointlessly contains libdisasm.a This looks like a left-over from when libtool was used Since this has no useful effect (as the linker doesn't recursively search archive members which aren't objects), anything which requires the objects in libdisasm.a must already be linking with it, so simply remove it. BUG=https://code.google.com/p/google-breakpad/issues/detail?id=484 Review URL: https://codereview.chromium.org/1399003002 .
* Fix file descriptor leaks in linux CrashGenerationServerMike Frysinger2015-11-111-0/+3
| | | | | | R=ted.mielczarek@gmail.com Review URL: https://codereview.chromium.org/1137423004 .
* Install headers under client/linux/dump_writer_commonMike Frysinger2015-11-112-25/+59
| | | | | | | | | | | | Automake did not install headers under c/l/dwc, which caused compile errors when building against an installed breakpad, since other headers (e.g. client/linux/handler/exception_handler.h) depended on it. This commit adds these headers to the list of automake installed files. R=vapier@chromium.org Review URL: https://codereview.chromium.org/1127393006 .
* Make dump_syms buildable under newer versions of Xcode.Boris Vidolov2015-11-101-0/+4
| | | | | | | R=mark@chromium.org BUG= Review URL: https://codereview.chromium.org/1438483002 .
* Android: Workaround for ftruncate() issues.Lei Zhang2015-11-051-3/+69
| | | | | | | | | | | | | | | | | | This works around a bug in M that prevents Breakpad from using ftruncate() in the renderer process. To do this, skip the calls to ftruncate() when allocating bigger minidump files and strictly depends on write() to append to the end. It might be less efficient but this is probably less of an issue on SD cards. It is much better than not getting crash reports. BUG=542840 Original CL: https://codereview.appspot.com/273880044/ Original CL Author: acleung@chromium.org Review URL: https://codereview.chromium.org/1407233016 .
* Issue in StackwalkerAMD64::GetCallerByFramePointerRecovery.Ivan Penkov2015-10-153-9/+165
| | | | | | | | | | | | | | There is an issue in StackwalkerAMD64::GetCallerByFramePointerRecovery. Occasionally it produces invalid frames (instruction pointer == 0) which prevents the AMD64 stack walker from proceeding to do stack scanning and instead leads to premature termination of the stack walking process. For more details: http://crbug/537444 BUG= R=mark@chromium.org Review URL: https://codereview.chromium.org/1408973002 .
* Only release current_breakpad_ if it is defined.Benjamin Lerman2015-10-141-1/+1
| | | | | | R=mark@chromium.org Review URL: https://codereview.chromium.org/1402453006 .
* Revert "[Docs] Add wiki content to Markdown docs"Mike Frysinger2015-10-072-31/+0
| | | | | | | | | | | This reverts commit 7ed2476eea2c2a50fd40ec3e711dcb311d472753. This was supposed to be committed to the linux-syscall-support project. The two CLs landing at the sametime confused me. Note: LSS has been updated via commit 08056836f2b4a5747daff75435d10d6. Review URL: https://codereview.chromium.org/1395743002 .
* Fix Windows crash_generation_server for debug builds without -D_DEBUGTed Mielczarek2015-10-071-1/+1
| | | | | | | | | | | | Debug Gecko builds don't build with -D_DEBUG, so the ifdef in crash_generation_server doesn't work right. The MSDN documentation for assert says that it's enabled based on the absence of the NDEBUG define, so using that seems sensible. R=thestig@chromium.org BUG= Review URL: https://codereview.chromium.org/1398453002 .
* Support for multiple upload files in CrashReportSender/HTTPUploadDavid Major2015-10-069-58/+63
| | | | | | | | A=David Major <dmajor@mozilla.com> BUG=https://bugzilla.mozilla.org/show_bug.cgi?id=1048091 R=ted@mielczarek.org Review URL: https://bugzilla.mozilla.org/show_bug.cgi?id=1048091 .
* Fix MSVC build (including on 2015), drop some workarounds for MSVC older ↵Ted Mielczarek2015-10-067-39/+15
| | | | | | | | | | | | | | | | | | | 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 .
* Increasing the Breakpad stack walker max scan limit from 30 to 40.Ivan Penkov2015-10-054-6/+6
| | | | | | | | | | | | | | | | | | | | | Chrome started hitting some crashes in v8 jitted code which happens to be non ABI compliant and debuggers (including WinDBG) are unable to produce meaningful stack traces. The Breakpad stack walker has some builtin heuristics to deal with such cases. More specifically, when unable to find a good parent frame, it scans the raw stack to find a suitable parent frame. The max scan size was set at 30 pointers which was (apparently) not enough to recover in this case. I'm increasing it to 40 pointers. I confirmed that at 34 pointers it was able to recover however I'm setting it to 40 in order to it some slack. I needed to update two unittests which were expecting the previous scan limit. BUG= R=mark@chromium.org Review URL: https://codereview.chromium.org/1379433005 .
* [mac] Teach dump_syms to handle additional zerofill sectionsPavel Labath2015-09-301-1/+3
| | | | | | | | | | | | | | This patch allows dump_syms to handle S_THREAD_LOCAL_ZEROFILL and S_GB_ZEROFILL section in the same way as the more common S_ZEROFILL section. Previously, dump_syms would fail to dump a binary containing a __DATA,__thread_bss section, because it tried to look up its data (and failed). R=mark@chromium.org Review URL: https://codereview.chromium.org/1369233003 . Patch from Pavel Labath <labath@google.com>.
* Fix automake files after README.md -> README renamePrimiano Tucci2015-09-282-2/+2
| | | | | | | | | | | Minor followup to crrev.com/1357773004 and crrev.com/1361993002 which moved the README and forgot to update the automake files. This is to make "./configure && make" work. TBR=mark@chromium.org Review URL: https://codereview.chromium.org/1368363002 .
* Add GPU fingerprint information to breakpad microdumps.Primiano Tucci2015-09-287-81/+164
| | | | | | | | | | | | | | | | | | Although strictly the GPU fingerprint is defined by the build fingerprint, there is not currently a straightforward mapping from build fingerprint to useful GPU / GL driver information. In order to aid debugging of WebView crashes that occur in GL drivers, and to better understand the range of drivers and versions for feature blacklisting purposes, it is useful to have GPU fingerprints in breakpad microdumps. Landing this patch on behalf of Tobias Sargeant<tobiasjs@chromium.org> BUG=chromium:536769 R=primiano@chromium.org, thestig@chromium.org Review URL: https://codereview.chromium.org/1334473003 .
* [Docs] Add wiki content to Markdown docsMike Frysinger2015-09-242-0/+31
| | | | | | | BUG=none R=vapier@chromium.org, mseaborn@chromium.org Review URL: https://codereview.chromium.org/1356253003 .
* Update configure to look for README.md instead of READMEMark Mentovai2015-09-233-5/+5
| | | | | | | | | This is required after daed3a43836e. configure won't run as-is, reported in https://codereview.chromium.org/1357773004/. R=andybons@chromium.org Review URL: https://codereview.chromium.org/1361993002 .
* [Docs] add markdown docs (converted from Wiki)Andy Bonventre2015-09-2217-37/+2948
| | | | | | | | | | BUG=none R=mark CC=google-breakpad-dev@googlegroups.com Review URL: https://codereview.chromium.org/1357773004 . Patch from Andy Bonventre <andybons@chromium.org>.
* Linux ExceptionHandler: don't allocate the CrashContext on the stackPrimiano Tucci2015-09-221-15/+27
| | | | | | | | | | | | | | | | | | | | | | | | | On Android the size of the alternate stack can be very small (8k). Even if breakpad uses sigaltstack to increase the size of the alternate stack during initialization, that call affects only the main thread. On Android, the libc's pthread initializer reset the sigaltstack to 8k. When entering a signal handler, the kernel typically pushes the context on the alternate stack. On arm64, sizeof(CrashContext) is ~5k, which leaves 3k of usable stack for breakpad. On top of that, breakpad allocates another struct CrashContext on the stack. In the case of Android arm64, then, breakpad ends up using 5k + 5k > 8k of stack, which causes a stack overflow. This got unnoticed in Android L, as the alternate stack didn't have red-zones between them, so breakpad was often happily overflowing onto the next thread's stack. This is not the case anymore [1]. This CL moves the CrashContext into a global variable. It should be safe as the ExceptionHandlers are serialized on a mutex. [1] https://android.googlesource.com/platform/bionic/+/595752f623ae88f7e4193a6e531a0805f1c6c4dc BUG=374 R=mark@chromium.org Review URL: https://codereview.chromium.org/1354923002 .
* Fixup a bad strcmp call landed in previous commitTed Mielczarek2015-09-161-1/+1
|
* Fix Mac Breakpad host tools to build in Linux cross-compileTed Mielczarek2015-09-1635-201/+4533
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | We're working on building our Firefox Mac builds as a Linux cross-compile (https://bugzilla.mozilla.org/show_bug.cgi?id=921040) and we need symbol dumping to work. This change ports the Mac dump_syms tool to build and work on Linux. I've tested it and it produces identical output to running the tool on Mac. The bulk of the work here was converting src/common/mac/dump_syms.mm and src/tools/mac/dump_syms/dump_syms_tool.mm from ObjC++ to C++ and removing their use of Foundation classes in favor of standard C/C++. This won't compile out-of-the-box on Linux, it requires some Mac system headers that are not included in this patch. I have those tentatively in a separate patch to land in Gecko (http://hg.mozilla.org/users/tmielczarek_mozilla.com/mc/rev/5fb8da23c83c), but I wasn't sure if you'd be interested in having them in the Breakpad tree. We could almost certainly pare down the set of headers included there, I didn't spend too much time trying to minimize them (we primarily just need the Mach-O structs and a few associated bits). I just realized that this patch is missing updating the XCode project files (ugh). I'll fix that up in a bit. R=mark@chromium.org BUG=https://bugzilla.mozilla.org/show_bug.cgi?id=543111 Review URL: https://codereview.chromium.org/1340543002 .
* Update gitignore to ignore more GYP thingsTed Mielczarek2015-09-111-0/+5
| | | | | | | | | Now that we're using gclient everywhere, the hook to run gyp on the Windows projects gets run on Linux, so we get Makefiles strewn around the tree. R=vapier@chromium.org Review URL: https://codereview.chromium.org/1339653002 .
* solaris: fix spurious ;Mike Frysinger2015-09-111-1/+1
| | | | | | | | | | As reported in the issue tracker, building on Solaris 8 fails: .../src/common/solaris/guid_creator.cc:69: error: extra `;' BUG=google-breakpad:251 R=ted.mielczarek@gmail.com Review URL: https://codereview.chromium.org/1333243002 .
* README: update dev documents w/new git flowMike Frysinger2015-09-111-19/+13
| | | | | | | BUG=chromium:502355 R=thestig@chromium.org Review URL: https://codereview.chromium.org/1335483002 .
* deps: switch lss to gitMike Frysinger2015-09-111-1/+2
| | | | | | | | BUG=524777 TEST=`gclient sync` switches lss to git R=thestig@chromium.org Review URL: https://codereview.chromium.org/1331783002 .