aboutsummaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
...
* Fix several issues in linux_dumper_unittest_helperted.mielczarek@gmail.com2012-04-031-3/+6
| | | | | | | Patch by Chris Dearman <chris@mips.com> R=ted at http://breakpad.appspot.com/369001/ git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@943 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Fix for putting main module as first one in minidumpmkrebs@chromium.org2012-03-302-3/+53
| | | | | | | | | | | | | | The first module in a minidump is expected to be for the main executable. We used to assume that /proc/<pid>/maps always showed that one first, but in some cases that is no longer true (see comment #7 of the bug). So this change makes use of the entry point stored in auxv to make sure we put the correct module first. BUG=chromium-os:25355 TEST=Ran Breakpad tests Review URL: https://breakpad.appspot.com/366002 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@942 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
* Fix one more -Wnull-conversion warning.mark@chromium.org2012-03-301-1/+2
| | | | | | | | | Patch by Nico Weber <thakis@chromium.org> Review URL: https://breakpad.appspot.com/370001/ git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@939 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Fix -Wnull-conversion warnings in breakpad.mark@chromium.org2012-03-302-2/+2
| | | | | | | | | Patch by Nico Weber <thakis@chromium.org> Review URL: https://breakpad.appspot.com/367001/ git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@938 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Fix class/struct mismatches in forward declarations.benchan@chromium.org2012-03-305-5/+5
| | | | | | | | | | This patch fixes some compiler warnings when compiling with clang. BUG=none TEST=Compile with clang and run unit tests. Review URL: https://breakpad.appspot.com/368001 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@937 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Unregister waits when a client shuts down so that no further callback events cancdn@chromium.org2012-03-221-0/+1
| | | | | | | | | | fire for that client. BUG=117890 TEST=N/A Review URL: https://breakpad.appspot.com/365001 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@936 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Add high level API for breakpad on iOS.qsr@chromium.org2012-03-137-11/+402
| | | | | | | | | | | The new API allows to automatically upload repports to the crash server when the application restarts. This change also: - Correct a bug on the test for correct alignment of the abrt signal handler - Add user friendly information on crashes for SIGABRT and NSException Review URL: https://breakpad.appspot.com/361001 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@935 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Change iOS implementation to not use exc_serverqsr@chromium.org2012-03-091-86/+89
| | | | | | | | | | | Instead of using exc_server, the message is parsed directly, and the minidump is created, then the app is killed. Moreover, the only catch exception is exception_raise. This patch remove all rereference to exception_raise_state and exception_raise_state_identity. Review URL: https://breakpad.appspot.com/358001 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@934 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Add SIGABRT handler for mac and iOS.qsr@chromium.org2012-03-093-10/+90
| | | | | | | | SIGABRT were not handled while in process. This change add a signal handler to handle this. Review URL: https://breakpad.appspot.com/360001 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@933 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Add COPYING file per libcurl distribution requirementsnealsid2012-03-091-0/+22
| | | | git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@932 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Remove static initializer in linux/guid_creator.cc.qsr@chromium.org2012-03-081-8/+16
| | | | | | | | | | There was a static initializer generated for this file in Chrome for Android. Patch by pliard@chromium.org Original review: http://breakpad.appspot.com/359001/ Review URL: https://breakpad.appspot.com/359002 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@931 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Removing breakpad_exc_server and all references.qsr@chromium.org2012-03-083-2085/+2
| | | | | | | This was aimed at replacing exc_server, but was not used. Review URL: https://breakpad.appspot.com/357001 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@930 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Correct various compilation warnings.qsr@chromium.org2012-03-073-16/+17
| | | | | | | | | | - Cast result of _dyld_image_count to prevent compilation warning: The 2 int in both side of the ? operator should have the same type. - Remove unused variable for return values. - Remove unused NSUserDefaults. Review URL: https://breakpad.appspot.com/354001 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@929 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Send uptime as milliseconds for Mac and iOS.qsr@chromium.org2012-03-023-11/+17
| | | | | | | | All other platform are sending uptime as milliseconds. Changing the implementation to do the same on Mac and iOS. Review URL: https://breakpad.appspot.com/355001 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@928 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Support for .raSearch in the x86 stackwalkermark@chromium.org2012-02-233-7/+88
| | | | | | | Patch by Benjamin Smedberg <bsmedberg@gmail.com> git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@927 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Handle program strings with the assignment operator smashed against the nextmark@chromium.org2012-02-233-120/+151
| | | | | | | | | token. Patch by Benjamin Smedberg <bsmedberg@gmail.com> git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@926 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Modify CrashGenerator::CreateChildCrash to copy proc files.benchan@chromium.org2012-02-235-20/+116
| | | | | | | | | | | | | | | | | | | | | This patch is taken from the downstream version of breakpad in Chromium OS: https://gerrit.chromium.org/gerrit/15148 LinuxCoreDumperTest previously assumes the proc files of the child process created by CrashGenerator::CreateChildCrash() have the same content as its parent process, which may not be true. This CL modifies CrashGenerator to copy the proc files of the child process, created by CreateChildCrash(), before crashing that process. BUG=chromium-os:25252 TEST=Verified the following: TEST=Tested the following: 1. Build on 32-bit and 64-bit Linux with gcc 4.4.3 and gcc 4.6. 2. Build on Mac OS X 10.6.8 with gcc 4.2 and clang 3.0 (with latest gmock). 3. All unit tests pass. Review URL: https://breakpad.appspot.com/353001 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@925 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Fix an invalid cast in PostfixEvaluator<ValueType>::EvaluateInternal().mark@chromium.org2012-02-231-1/+1
| | | | | | | | | | | | | | | This patch fixes a compilation error with gcc / clang on Linux / Mac OS. BUG=none TEST=Tested the following: 1. Build on 32-bit and 64-bit Linux with gcc 4.4.3 and gcc 4.6. 2. Build on Mac OS X 10.6.8 with gcc 4.2 and clang 3.0 (with latest gmock). 3. All unit tests pass. Patch by Ben Chan <benchan@chromium.org> git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@924 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Add support for @ operator to PostfixEvaluatorted.mielczarek2012-02-213-6/+17
| | | | | | R=mark at http://breakpad.appspot.com/349002/ git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@923 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Move away from the 10.4 SDK.mark@chromium.org2012-02-212-5/+0
| | | | | | Review URL: https://breakpad.appspot.com/351001 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@922 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Funnel all bootstrap_register calls through a routine that doesn't care thatmark@chromium.org2012-02-216-12/+130
| | | | | | | | | it's deprecated. Apple marked bootstrap_register as deprecated on 10.5 but it's actually still needed on that OS release. There isn't a way to get the functionality Breakpad needs from it without calling it until 10.6. Review URL: https://breakpad.appspot.com/350001 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@921 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Add some missing #includested.mielczarek2012-02-152-0/+3
| | | | | | | P=Albert Zeyer R=ted at http://breakpad.appspot.com/289001 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@920 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Add filename to error message when PDBSourceLineWriter::Open failsted.mielczarek2012-02-151-3/+3
| | | | | | | P=Albert Zeyer R=ted at http://breakpad.appspot.com/286002/ git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@919 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Avoid setting an alternative stack for signals if there is already oneted.mielczarek2012-02-142-8/+11
| | | | | | | P=Mike Hommey <mh@glandium.org> R=ted at http://codereview.appspot.com/5573054/ git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@918 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Add missing include.qsr@chromium.org2012-02-141-0/+1
| | | | | | | As the include define some method to be inlined, not having the include breaks the compilation of optimized builds. Review URL: https://breakpad.appspot.com/347002 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@917 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Creating minidump for uncaught exception on iOS.qsr@chromium.org2012-02-145-7/+312
| | | | | | | | | | | This CL adds a minidump_generator that can write a minidump from a NSException on iOS on an ARM cpu. This CL also install an uncaught exception handler on iOS, and use the previous generator to write minidumps for any uncaught exception. Review URL: https://breakpad.appspot.com/347001 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@916 4c0a9323-5329-0410-9bdc-e9ce6186880e
* createDirectoryAtPath:attributes: is deprecated, use the suggested (10.5+)mark@chromium.org2012-02-091-45/+4
| | | | | | | | | | | replacement. Patch by Nico Weber <thakis@chromium.org> Review URL: https://breakpad.appspot.com/349001/ git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@915 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Fix clang warning about format string.mark@chromium.org2012-02-091-1/+1
| | | | | | | | | Patch by Nico Weber <thakis@chromium.org>. Review URL: https://breakpad.appspot.com/348001/ git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@914 4c0a9323-5329-0410-9bdc-e9ce6186880e
* NXSwapBigIntToHost is deprecated, use CFSwapInt32BigToHost instead.mark@chromium.org2012-02-061-8/+9
| | | | | | | Patch by Nico Weber <thakis@chromium.org> git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@913 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Breakpad DWARF: Add support for DWARF 4 attribute forms.jimblandy2012-02-017-8/+179
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch allows Breakpad's DWARF reader to at least read or skip attributes using the new forms defined in version 4 of the DWARF specification, instead of crashing. Attributes encoded using DW_FORM_flag_present, DW_FORM_sec_offset, and DW_FORM_exprloc should work fine now. However, compilation units using DW_FORM_ref_sig8 to refer to types in .debug_types will need further work to support. (GCC 4.6.2 does not emit .debug_types sections.) Specifically: - dwarf2reader::DwarfForm gets new values. - dwarf2reader::Dwarf2Handler and dwarf2reader::DIEHandler get new handler methods, named ProcessAttributeSignature, for DW_FORM_ref_sig8 attributes. - dwarf2reader::CompilationUnit reads DW_FORM_ref_sig8 attributes, and passes them to ProcessAttributeSignature. It also gets support for DW_FORM_sec_offset, DW_FORM_exprloc, and DW_FORM_flag_present, using the existing appropriate ProcessAttribute* methods. - dwarf2reader::DIEDispatcher passes through ProcessAttributeSignature attributes to its DIEHandler. - Unit tests are updated. a=jimb, r=ted.mielczarek Review URL: http://breakpad.appspot.com/343003/ git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@912 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Breakpad DWARF support: Remove extraneous breaks following returns in ↵jimblandy2012-02-011-44/+6
| | | | | | | | | | dwarf2reader.cc. a=jimb, r=ted.mielczarek Review URL: http://breakpad.appspot.com/343002/ git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@911 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Add partial unit tests for dwarf2reader::CompilationUnit.jimblandy2012-02-014-0/+549
| | | | | | | | This is really incomplete --- it's just what's needed to get started testing support for the DWARF 4 attribute forms. git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@910 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Change some functions in linux_libc_support.h to use intmax_t instead of int.ted.mielczarek2012-01-271-2/+2
| | | | | | | | A=Benjamin Smedberg <benjamin@smedbergs.us> R=ted Review URL: https://bugzilla.mozilla.org/show_bug.cgi?id=716638 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@909 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Fix test addresses to use uintptr_t instead of u_int64_t.benchan@chromium.org2012-01-273-4/+4
| | | | | | | | | | | | | | | | When a variable is used to set (and lookup) MappingInfo's "start_addr" field, it needs to match types -- which is "uintptr_t". When Chrome OS updated the 'make' that's used for building, the 32-bit "char *" had sign-extended when cast up to a u_int64_t -- maybe because pointers were unsigned before and then changed to be signed -- and that caused the address lookup to fail. BUG=chromium-os:25355 TEST=Ran Breakpad unittests A=mkrebs@chromium.org Review URL: http://breakpad.appspot.com/345001 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@908 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Fix several clang warnings in breakpad.mark@chromium.org2012-01-262-4/+4
| | | | | | | | | | | | | | | | | | uploader.mm:549:5: warning: instance method '-uploadData:name:url:' not found (return type defaults to 'id') [self uploadData:logFileData_ name:@"log" url:url]; => it looks like this method does in fact not exist, the last parameter needs to be removed. breakpad_nlist_64.cc:193:59: warning: '&&' within '||' [-Wlogical-op-parentheses] => Just add parentheses, no functionality change. Patch by Nico Weber <thakis@chromium.org> BUG=none TEST=breakpad stil works. git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@907 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Use sys_prctl instead of prctl.thestig@chromium.org2012-01-241-8/+5
| | | | | | | http://breakpad.appspot.com/339002 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@906 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Implement core dump to minidump conversion.benchan@chromium.org2012-01-1916-431/+1278
| | | | | | | | | | | | | | | | | | | | | | | | | | | This patch is part of a bigger patch that helps merging the breakpad code with the modified version in Chromium OS. Specifically, this patch makes the following changes: 1. Turn the LinuxDumper class into a base class and move ptrace related code into a new derived class, LinuxPtraceDumper. 2. Add a LinuxCoreDumper class, which is derived from LinuxDumper, to extract information from a crashed process via a core dump file instead of ptrace. 3. Add a WriteMinidumpFromCore function to src/client/linux/minidump_writer/minidump_writer.h, which uses LinuxCoreDumper to extract information from a core dump file. 4. Add a core2md utility, which simply wraps WriteMinidumpFromCore, for converting a core dump to a minidump. BUG=455 TEST=Tested the following: 1. Build on 32-bit and 64-bit Linux with gcc 4.4.3 and gcc 4.6. 2. Build on Mac OS X 10.6.8 with gcc 4.2 and clang 3.0 (with latest gmock). 3. All unit tests pass. 4. Run Chromium OS tests to test core2md. Review URL: http://breakpad.appspot.com/343001 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@905 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Skip ElfCoreDumpTest.ValidCoreFile test if no core dump is generated.benchan@chromium.org2012-01-112-11/+43
| | | | | | | | | | | | | | | CrashGenerator::CreateChildCrash() may have some flakiness. This patch changes ElfCoreDumpTest to temporarily skip the ValidCoreFile test if no core dump is generated by CrashGenerator::CreateChildCrash(), but print out the error message to help debug the flakiness. BUG=chromium-os:24982 TEST=Tested the following: 1. Build on 32-bit and 64-bit Linux with gcc 4.6. 2. All unit tests pass. Review URL: http://breakpad.appspot.com/342001 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@904 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Build LinuxLibcSupportTest and make it pass.thestig@chromium.org2012-01-113-2/+29
| | | | | | Review URL: http://breakpad.appspot.com/341001 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@903 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Refactor LinuxDumper and MinidumpWriter.benchan@chromium.org2012-01-116-89/+146
| | | | | | | | | | | | | | | | | | | | | | | This patch is part of a bigger patch that helps merging the breakpad code with the modified version in Chromium OS. Specifically, this patch makes the following changes: 1. Add two convenient methods, back() and empty(), to the wasteful_vector class. 2. Refactor the LinuxDumper class such that it can later be splitted into a base class and two derived classes, one uses the current ptrace implementation and one uses a core file. 3. Refactor the MinidumpWriter class such that it can later use different derived implementations of LinuxDumper. BUG=455 TEST=Tested the following: 1. Build on 32-bit and 64-bit Linux with gcc 4.4.3 and gcc 4.6. 2. Build on Mac OS X 10.6.8 with gcc 4.2 and clang 3.0 (with latest gmock). 3. All unit tests pass. Review URL: http://breakpad.appspot.com/340001 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@902 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Clear error state flags in binarystream::rewind().benchan@chromium.org2012-01-091-0/+3
| | | | | | | | | | | | | This patch is taken from the downstream google-breakpad in Chromium OS (https://gerrit.chromium.org/gerrit/#change,7797), which makes binarystream::rewind() properly clear error state flags. BUG=460 TEST=Tested in downstream google-breakpad in Chromium OS. A=asharif@chromium.org Review URL: http://breakpad.appspot.com/339001 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@901 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Add utilities for processing Linux core dump files.benchan@chromium.org2012-01-0711-32/+1171
| | | | | | | | | | | | | | | | | | | | | This patch is part of a bigger patch that helps merging the breakpad code with the modified version in Chromium OS. Specifically, this patch makes the following changes: 1. Add an ElfCoreDump class for processing Linux core dump files, which will later be used to implement the core dump to minidump conversion. 2. Add a CrashGenerator class for generating a crash with a core dump file for testing the functionalities of ElfCoreDump. 3. Move some utility functions for reading/writing files to file_utils.h. BUG=455 TEST=Tested the following: 1. Build on 32-bit and 64-bit Linux with gcc 4.4.3 and gcc 4.6. 2. Build on Mac OS X 10.6.8 with gcc 4.2 and clang 3.0 (with latest gmock). 3. All unit tests pass. Review URL: http://breakpad.appspot.com/337001 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@900 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Send crash dumps to Google via HTTPS instead of HTTP, since they mightthestig@chromium.org2012-01-041-1/+1
| | | | | | | | | | | | | contain sensitive information. BUG=none TEST=crash dumps still arrive A=palmer@chromium.org Original code review: http://breakpad.appspot.com/338001 Review URL: http://breakpad.appspot.com/334002 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@899 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Replace MMappedRange with MinidumpMemoryRange.benchan@chromium.org2011-12-216-123/+523
| | | | | | | | | | | | | | | | | | | | | | | This patch is part of a bigger patch that helps merging the breakpad code with the modified version in Chromium OS. The MemoryRange class was added in r895 (http://breakpad.appspot.com/332001), which is largely based on MMappedRange but generalized to be used in other code. However, MemoryRange does not support minidump data structures. This patch adds a MinidumpMemoryRange class that extends MemoryRange to handle minidump data structures, which can then replace MMappedRange. As with MemoryRange, MinidumpMemoryRange is unit tested. BUG=455 TEST=Tested the following: 1. Build on 32-bit and 64-bit Linux with gcc 4.4.3 and gcc 4.6. 2. Build on Mac OS X 10.6.8 with gcc 4.2 and clang 3.0 (with latest gmock). 3. All unit tests pass. 4. Run minidump-2-core to covnert a minidump file to a core file. Review URL: http://breakpad.appspot.com/335001 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@898 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Eliminate another source of UnspecifiedStackSignature crash dumps.mark@chromium.org2011-12-211-45/+38
| | | | | | | | | | | | | | | | | Manufacturing an exception record improves the crash reporting, since then the crashes get bucketed by the call stack leading to the dump, instead of all falling into a misc bucket that nobody ever looks at. Currently these are occuring through e.g. dumps from the base watchdog. Link against RtlCaptureContext, as the function has been documented as available from Windows XP [http://msdn.microsoft.com/en-us/library/windows/desktop/ms680591(v=vs.85).aspx]. Patch by Siggi Asgeirsson <siggi@chromium.org> git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@897 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Replace readlink calls with a safer version that guarantees NULL-termination.benchan@chromium.org2011-12-2110-21/+287
| | | | | | | | | | | | | | | | | | | | | This patch is part of a bigger patch that helps merging the breakpad code with the modified version in Chromium OS. Specifically, this patch makes the following changes: 1. Add a SafeReadLink function that wraps sys_readlink() to resolve a symbolic link but guarantees the result is NULL-terminated on success. 2. Refactor other source code to use SafeReadLink instead of readlink() or sys_readlink(). BUG=455 TEST=Tested the following: 1. Build on 32-bit and 64-bit Linux with gcc 4.4.3 and gcc 4.6. 2. Build on Mac OS X 10.6.8 with gcc 4.2 and clang 3.0 (with latest gmock). 3. All unit tests pass. 4. Run minidump-2-core to covnert a minidump file to a core file. Review URL: http://breakpad.appspot.com/334001 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@896 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Refactor code in preparation of merging with the fork in Chromium OS.benchan@chromium.org2011-12-1612-65/+878
| | | | | | | | | | | | | | | | | | | | | | This patch is part of a bigger patch that helps merging the breakpad code with the modified version in Chromium OS. Specifically, this patch makes the following changes: 1. Add a MemoryRange class for encapsulating and checking read access to a contiguous range of memory. 2. Add a MemoryMappedFile class for mapping a file into memory for read-only access. 3. Refactor other source code to use MemoryMappedFile. BUG=455 TEST=Tested the following: 1. Build on 32-bit and 64-bit Linux with gcc 4.4.3 and gcc 4.6. 2. Build on Mac OS X 10.6.8 with gcc 4.2 and clang 3.0 (with latest gmock). 3. All unit tests pass. 4. Run minidump-2-core to covnert a minidump file to a core file. Review URL: http://breakpad.appspot.com/332001 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@895 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Fix ContextDeathTest.X86BadFlags unit test on Mac OS X.benchan@chromium.org2011-12-161-1/+1
| | | | | | | | | | | | The assertion (context.context_flags & MD_CONTEXT_X86) in synth_minidump.cc produces a different message on Mac OS X than other platforms. This patch changes the ContextDeathTest.X86BadFlags test to handle both message patterns. BUG=424 TEST=Verified ContextDeathTest.X86BadFlags on Windows, Linux and Mac OS X. Review URL: http://breakpad.appspot.com/333001 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@894 4c0a9323-5329-0410-9bdc-e9ce6186880e