aboutsummaryrefslogtreecommitdiff
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
...
* Chrome on Android now supports loading the shared library directly from the ↵rmcilroy@chromium.org2014-07-2210-43/+201
| | | | | | | | | | | | | | | | | | | | | | APK file. This patch makes two changes to breakpad to enable crash reporting to work correctly when the library is inside another file (an archive): - Do not filter mappings which map an executable at a non-zero offset. - If such an executable is mapped look in the ELF information for the shared object name and use that name in the minidump. Note this change doesn't care about the archive format and isn't Android specific (though loading the shared library this way is currently only done on Android). BUG=390618 R=thestig@chromium.org Review URL: https://breakpad.appspot.com/7684002 Patch from Anton Carver <anton@chromium.org>. git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1355 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Both std::tr1::unordered_set and std::unordered_set are not allowed inivanpe@chromium.org2014-07-212-10/+63
| | | | | | | | | | | Google at this moment. This change is implementing a workaround that allows switching to hash_set and hash_map. R=mark@chromium.org Review URL: https://breakpad.appspot.com/6694002 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1354 4c0a9323-5329-0410-9bdc-e9ce6186880e
* [Android]: Remove __system_property_get(ro.build.fingerprint) from ↵rmcilroy@chromium.org2014-07-181-17/+0
| | | | | | | | | | | | | | | WriteOSInformation. __system_property_get has been removed from the Android NDK for 'L' so Breakpad no longer links. This CL just removes the call in WriteOSInformation because Chrome already passes the build fingerprint as a crash key called "android_build_fp" in the crash report HTTP POST message. BUG=394841,393903 R=mark@chromium.org Review URL: https://breakpad.appspot.com/1694002 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1351 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Add frame pointer recovery to the AMD64 Stackwalker.rsesek@chromium.org2014-07-183-3/+61
| | | | | | | | | BUG=https://code.google.com/p/chromium/issues/detail?id=393594 R=mark@chromium.org Review URL: https://breakpad.appspot.com/10664002 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1350 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Change some ELF utils to return the length as a size_t.thestig@chromium.org2014-07-173-16/+17
| | | | | | | | R=mark@chromium.org Review URL: https://breakpad.appspot.com/7694002 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1349 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Ensure C:/Dumps/ exists in crash_generation_appted.mielczarek@gmail.com2014-07-111-0/+6
| | | | | | | A=j.turney R=ted at https://breakpad.appspot.com/1134002/ git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1348 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Stringify minidump stream_type constants in minidump_dump outputted.mielczarek@gmail.com2014-07-112-19/+88
| | | | | | R=mark at https://breakpad.appspot.com/3704002/ git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1347 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Don't free pointer in BasicCodeModules::BasicCodeModules before possibly ↵ted.mielczarek@gmail.com2014-07-101-3/+3
| | | | | | | | | using it A=Jim Chen <nchen@mozilla.com> R=ted at https://bugzilla.mozilla.org/show_bug.cgi?id=1033006 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1346 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Fix compilation error in Linux libc++ builds due to use of tr1/.mark@chromium.org2014-07-071-0/+8
| | | | | | | | | | | Patch by Sergey Matveev <earthdok@chromium.org> BUG=chromium:391792 Review URL: https://breakpad.appspot.com/7674002/ git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1345 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Unhook current Breakpad object after handling uncaught NSException.qsr@chromium.org2014-07-071-0/+1
| | | | | | | | | | | | | | | | | | After handling an uncaught NSException, release the Breakpad object so there will not be a second crash dump logged. Prior to this change, for every uncaught NSException handled through the Breakpad::UncaughtExceptionHandler(), a second crash without any useful information (generally __cxa_rethrow and std::__terminate) is recorded. R=qsr@chromium.org Review URL: https://breakpad.appspot.com/9664002 Patch from Peter Lee <pkl@chromium.org>. git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1344 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Make crash_handler volatile to prevent compiler optimizing it away.rmcilroy@chromium.org2014-07-021-1/+5
| | | | | | | | | | | | | This bug manifests itself on Android x64 (in ExceptionHandlerTest::ExternalDumper), but is possible on any platform. The compiler is unaware of the code which runs in the signal handler which reads this variable. Without volatile the compiler is free to optimise away writes to this variable which it believes are never read. BUG=381142, 346626 R=thestig@chromium.org Review URL: https://breakpad.appspot.com/8664002 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1343 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Cleanup: hide undefined behavior from the compiler better.ivanpe@chromium.org2014-07-011-4/+18
| | | | | | | | | | Submitting this on behalf of Paul Pluzhnikov. R=mark@chromium.org Review URL: https://breakpad.appspot.com/6674002 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1342 4c0a9323-5329-0410-9bdc-e9ce6186880e
* dump_syms: use unordered_set<> instead of set<> for speed.mark@chromium.org2014-06-261-4/+4
| | | | | | | | | | | | | dump_syms spends a lot of time trying to compare strings. This change speeds up processing of libwebviewchromium.so by 30% on my linux machine. Patch by Junichi Uekawa <uekawa@chromium.org> Review URL: https://breakpad.appspot.com/2714002/ git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1341 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Update output for test minidump_dump_test.ivanpe@chromium.org2014-06-251-19/+20
| | | | | | | | R=mark@chromium.org Review URL: https://breakpad.appspot.com/10654002 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1340 4c0a9323-5329-0410-9bdc-e9ce6186880e
* minidump_dump: bug fixes.mark@chromium.org2014-06-171-30/+53
| | | | | | | | | | | | | | | | | | | | - Convert time_t values to UTC correctly. It is incorrect to cast a uint32_t* to time_t* because the two types may have different widths. This is the case on many 64-bit systems, where time_t is a 64-bit signed integer. Conversion is unified in a single function, and additional uses of time_t in minidump files not previously displayed in UTC are now displayed. - Interpret the IMAGE_DEBUG_MISC structure correctly. - When printing MINIDUMP_SYSTEM_INFO structures, always show the "x86" side of the union, and state whether it's expected to be valid. (Existing Breakpad-produced non-Windows minidumps for x86_64 use the "x86" side of union, but Windows minidumps for x86_64 use the "other" side, so I want to print both.) R=ivanpe@chromium.org Review URL: https://breakpad.appspot.com/5674002 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1339 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Use PAGE_MAX_SIZE. PAGE_SIZE is now a variable size.qsr@chromium.org2014-06-061-1/+5
| | | | | | | | | | | | | | | | This fixes exception_handler.cc:77:8: error: fields must have a constant size: 'variable length array in structure' extension will never be supported char protected_buffer[PAGE_SIZE] __attribute__((aligned(PAGE_SIZE))); BUG=None TEST=breakpad builds on ios8 R=mark@chromium.org Review URL: https://breakpad.appspot.com/9654002 Patch from Justin Cohen <justincohen@chromium.org>. git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1338 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Add virtual dtor to LibcurlWrapper.pbos@chromium.org2014-06-042-0/+3
| | | | | | | | | | | LibcurlWrapper is deleted but contains no virtual destructor, triggering warnings with -Wdelete-non-virtual-dtor in clang++. R=ivanpe@chromium.org Review URL: https://breakpad.appspot.com/7664002 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1337 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Add missing MD_MISCINFO_FLAGS1_BUILDSTRING. Revise documentation to clarifymark@chromium.org2014-06-032-55/+158
| | | | | | | | | | | | | that it is not enough to check the size of an MDRawMiscInfo stream to verify member validity, the flags1 field needs to be consulted as well. Update minidump_dump to correctly consider the validity of all fields in this structure. R=ivanpe@chromium.org Review URL: https://breakpad.appspot.com/3694002 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1336 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Print more x86-64 registers in minidump_stackwalkted.mielczarek@gmail.com2014-05-301-4/+22
| | | | | | | | R=mark@chromium.org Review URL: https://breakpad.appspot.com/7654002 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1335 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Linux: Fix a memory leak in ExceptionHandler.thestig@chromium.org2014-05-281-0/+2
| | | | | | | | | BUG=592 R=mark@chromium.org Review URL: https://breakpad.appspot.com/3684002 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1334 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Fix a memory leak in DwarfCUToModule::FuncHandler::Finish().thestig@chromium.org2014-05-281-2/+2
| | | | | | | | | BUG=591 R=mark@chromium.org Review URL: https://breakpad.appspot.com/2704002 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1333 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Fix minor typo in a comment in r1331.rmcilroy@chromium.org2014-05-141-1/+1
| | | | | | | | R=qsr@google.com Review URL: https://breakpad.appspot.com/3674002 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1332 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Fix x86_64 Android build after user_fpregs_struct was added to /sys/user.h ↵rmcilroy@chromium.org2014-05-141-3/+8
| | | | | | | | | | | in newer NDKs BUG=346626 TBR=mark@chromium.org Review URL: https://breakpad.appspot.com/2694002 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1331 4c0a9323-5329-0410-9bdc-e9ce6186880e
* [MIPS] Fix core dump related unit tests for Android on MIPSgordana.cmiljanovic@imgtec.com2014-05-143-0/+65
| | | | | | | | | | | | | | | This change fixes failing unittests in Android on MIPS: LinuxCoreDumperTest.VerifyDumpWithMultipleThreads ElfCoreDumpTest.ValidCoreFile BUG=None TEST=Running breakpad_unittests on MIPS Android device Review URL: https://breakpad.appspot.com/3664002 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1330 4c0a9323-5329-0410-9bdc-e9ce6186880e
* [Mac] Remove unused host_info call and supporting calls.mark@chromium.org2014-05-121-11/+0
| | | | | | | | R=blundell@chromium.org Review URL: https://breakpad.appspot.com/2684002 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1329 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Fix the documentation for MinidumpFileWriter::Open().thestig@chromium.org2014-05-121-2/+2
| | | | | | | | | BUG=581 R=mark@chromium.org Review URL: https://breakpad.appspot.com/6654002 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1328 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Add required build options to correctly target XPwfh@chromium.org2014-05-081-0/+3
| | | | | | | | | BUG=588 R=chrisha@chromium.org Review URL: https://breakpad.appspot.com/5664002 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1327 4c0a9323-5329-0410-9bdc-e9ce6186880e
* FD leaks and handle errors better.rsesek@chromium.org2014-05-062-5/+13
| | | | | | | | | Patch from Matthew Dempsky <mdempsky@chromium.org>. Original review: https://breakpad.appspot.com/5654002/ Review URL: https://breakpad.appspot.com/1674002 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1326 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Add support for CFI based stack walking on Arm64.rmcilroy@chromium.org2014-05-063-5/+420
| | | | | | | | | | | | This CL adds CFI based stack walking support for Arm64 to BreakPad along with unit tests. The Arm64 CFI stack walker is based on the Arm CFI stack walker BUG=367367,335641,354405 R=blundell@chromium.org, mark@chromium.org Review URL: https://breakpad.appspot.com/1664002 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1325 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Make the Linux CrashGenerationClient an interface.rsesek@chromium.org2014-05-053-70/+81
| | | | | | | | | | | | Also allow it to be set on the ExceptionHandler. This will allow Chromium's implementation to be properly treated as an out-of-process handler. BUG=https://code.google.com/p/chromium/issues/detail?id=349600 R=mark@chromium.org Review URL: https://breakpad.appspot.com/2664002 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1324 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Fixing a build break on Linux.mmandlis@chromium.org2014-05-012-3/+1
| | | | | | | | R=ivanpe@chromium.org Review URL: https://breakpad.appspot.com/4654002 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1323 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Add Arm64 support to dumpsyms.rmcilroy@chromium.org2014-04-294-3/+42
| | | | | | | | | | | | Adds Arm64 support to dumpsyms, enabling support for EM_AARCH64 elf type and arm64 registers in DwarfCFIToModule. BUG=367367,335641,354405 R=mark@chromium.org Review URL: https://breakpad.appspot.com/1654002 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1322 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Clean up common.gypi.chrisha@chromium.org2014-04-286-353/+55
| | | | | | | | | | | This removes a handful of redundant variables and GYP includes. BUG= R=mark@chromium.org Review URL: https://breakpad.appspot.com/2654002 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1321 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Linux: Check the CRC32 of the debug link file in the symbol dumper.thestig@chromium.org2014-04-233-23/+175
| | | | | | | | R=mark@chromium.org Review URL: https://breakpad.appspot.com/1644002 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1320 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Change PrintFunctions to print functions in address order and not print ↵wfh@chromium.org2014-04-237-14725/+13827
| | | | | | | | | | | duplicate public functions. BUG=427 R=mark@chromium.org Review URL: https://breakpad.appspot.com/1634002 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1319 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Skip ElfCoreDumpTest and LinuxCoreDumperTest on Android if no core file is ↵rmcilroy@chromium.org2014-04-232-0/+20
| | | | | | | | | | | | | | | dumped. On certain versions of Android (specifically JellyBean MR2 on Nexus 7, possibly others too) no ELF core dump is created for crashing processes. Check for this and skip the test if so. BUG=364943 R=thestig@chromium.org Review URL: https://breakpad.appspot.com/1624003 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1318 4c0a9323-5329-0410-9bdc-e9ce6186880e
* minidump-2-core: Allow user to override shared lib basedir.thestig@chromium.org2014-04-181-5/+19
| | | | | | | | | | | | | | | | | | | | | | | This CL introduces "--sobasedir" command-line option to minidump-2-core. By default, paths to shared lib files included in generated core file are formatted as "/var/lib/breakpad/[GUID]libFoobar.so". By using "--sobasedir", this will be "[user-supplied-path]libFoobar.so". This option can be used to ease debugging minidump files from developer's local builds. By specifying "minidump-2-core --sobasedir `pwd`/out/Debug/lib/ foobar.mdmp", user can load the generated core file in gdb without setting up the symlinks for "/var/lib/breakpad". BUG=None A=kouhei@chromium.org Original code review: https://breakpad.appspot.com/1214002/ R=kouhei@chromium.org Review URL: https://breakpad.appspot.com/1584002 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1317 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Change the way function and public symbols are obtained to use the ↵wfh@chromium.org2014-04-167-13652/+14606
| | | | | | | | | | | | | | findChildren DIA function. This has a substantial performance improvement over using the getSymbolsByAddr iterator, especially on certain 64bit DLLS. e.g. Time to process chrome_child.dll drops from 51 minutes to 21 secs. Note: new test data looks different because the ordering of lines is no longer by memory address. This does not affect processing. The test data has been manually compared to old data and matches (except additional PUBLIC symbols). Also, INFO lines are omitted because the source executable files are not checked in, so they are unavailable. R=ivanpe@chromium.org, mark@chromium.org Review URL: https://breakpad.appspot.com/1574002 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1316 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Allow symupload to upload to multiple URLs on the same command line.wfh@chromium.org2014-04-161-30/+35
| | | | | | | | R=mark@chromium.org Review URL: https://breakpad.appspot.com/1554002 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1315 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Limit the workaround in r1313 to Android only.thestig@chromium.org2014-04-151-2/+9
| | | | | | | | | BUG=579 R=rmcilroy@chromium.org, vapier@chromium.org Review URL: https://breakpad.appspot.com/1564002 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1314 4c0a9323-5329-0410-9bdc-e9ce6186880e
* [Android]: Fix hang in CreateChildCrash() on Android.rmcilroy@chromium.org2014-04-151-13/+19
| | | | | | | | | | | | | | After r1299, the LinuxCoreDumperTest::VerifyDumpWithMultipleThreads and ElfCoreDumpTest::ValidCoreFile would both hang on Android. This appears to be due to the tkill signal not being recieved by the thread which is meant to crash, even though tkill returns 0. This CL retries sending the tkill signal multiple times, which prevents the Hang. BUG=579 R=thestig@chromium.org Review URL: https://breakpad.appspot.com/1524002 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1313 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Update offset of fpregs_mem.rmcilroy@chromium.org2014-04-152-2/+2
| | | | | | | | | | | | | Based on testing in the emulator. BUG=346626 R=thestig@chromium.org Review URL: https://breakpad.appspot.com/1544002 Patch from Anton Carver <anton@chromium.org>. git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1312 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Add x64 version of getcontext.rmcilroy@chromium.org2014-04-115-0/+275
| | | | | | | | | | | | | Assembly code is derived in part from code in libunwind. Code tested on desktop linux (Android testing pending emulation support). BUG=346626 R=dannyb@google.com, thestig@chromium.org Review URL: https://breakpad.appspot.com/1454002 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1311 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Fill in CPU info in mini-dump for Arm64.rmcilroy@chromium.org2014-04-111-13/+54
| | | | | | | | | | | | Adds Arm64 varients of CPUFillThreadInfo and CPUFillFromUContext and WriteCPUInformation for the Linux/Android client. BUG=354405,335641 R=mark@chromium.org Review URL: https://breakpad.appspot.com/1464002 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1310 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Adding support for 64-bit Windows modules to ms_symbol_server_converter.ivan.penkov@gmail.com2014-04-1012-684/+872
| | | | | | | | | | | | | | | | As part of that: - Updated MSSymbolServerConverter to also download the executable files from the symbol server and pass them to the PDBSourceLineWriter as it is required for successful conversion of symbols for 64-bit modules. - Added a .gyp file and target for the ms_symbol_server_converter library. - Updated PDBSourceLineWriter to allow executable files to be in locations different from the locations of the PDB files. - Minor style issue: * #define guards. * No space before ')' and after '('. R=mark@chromium.org, wfh@chromium.org Review URL: https://breakpad.appspot.com/1434002 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1309 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Moving directory 'build' one level up as it collides with a file named ↵ivan.penkov@gmail.com2014-04-1016-10/+1456
| | | | | | | | | | 'BUILD' which happens to be in that same location in the Google source depot. R=chrisha@chromium.org, mark@chromium.org Review URL: https://breakpad.appspot.com/1504002 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1308 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Increase Breakpad's signal handler stack size.rmcilroy@chromium.org2014-04-091-1/+1
| | | | | | | | | | | | Some unittests fail on Android (both on Arm and Arm64) without this stack size increase. BUG=354405,335641 R=mark@chromium.org Review URL: https://breakpad.appspot.com/1484002 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1307 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Fix aarch64 ucontext layout on Androidrmcilroy@chromium.org2014-04-094-9/+23
| | | | | | | | | BUG=354405,335641 R=mark@chromium.org Review URL: https://breakpad.appspot.com/1444002 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1306 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Add Arm64 support to breakpad unittests.rmcilroy@chromium.org2014-04-084-12/+10
| | | | | | | | | BUG=354405,335641 R=mark@chromium.org Review URL: https://breakpad.appspot.com/1424002 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1305 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Move build configuration to root of repository.chrisha@chromium.org2014-04-0316-1487/+19
| | | | | | | | | | | This is in preparation for creating GYP build files for each platform. BUG=https://code.google.com/p/google-breakpad/issues/detail?id=575 R=mark@chromium.org Review URL: https://breakpad.appspot.com/1414002 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@1304 4c0a9323-5329-0410-9bdc-e9ce6186880e