aboutsummaryrefslogtreecommitdiff
path: root/src/processor
Commit message (Collapse)AuthorAgeFilesLines
...
* Add an abstract interface to SourceLineResolver, and allow any implementationbryner2006-12-1112-153/+79
| | | | | | | | | to be used with MinidumpProcessor. The basic SourceLineResolver is now a public interface (#89) git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@83 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Provide a mechanism for SymbolSuppliers to interrupt processing (#93)bryner2006-12-088-79/+136
| | | | git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@80 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Allow exception handler callbacks more flexibility (#81). r=brynermmentovai2006-12-077-21485/+21961
| | | | | | | | | | | | | | | | | | | | | - Provide an optional filter callback that gets triggered before attempting to write a dump, to give client code a chance to refuse handling early in the process. - Allow exceptions that are unhandled by Airbag (due to filter callback or dump callback return value, or failure to write a dump) to be passed to the previous handler or to the system. - In order to pass exceptions unhandled by the topmost Airbag handler to lower handlers, fix up the stacking of ExceptionHandler objects, and give each ExceptionHandler object its own thread (like the Mac implementation) to avoid deadlock. - Provide a dump_path argument to callbacks, as requested by developers and already implemented in the Mac handler. - Avoid calling c_str in exception handler code (#90). http://groups.google.com/group/airbag-dev/browse_thread/thread/4771825ced38a84c git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@79 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Test data update following PDBSourceLineWriter change (#91). r=brynermmentovai2006-12-075-5/+5
| | | | | | | http://groups.google.com/group/airbag-dev/browse_thread/thread/d713d3e73aa1a0dd git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@78 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Fix possible null pointer dereference in MinidumpModule (following #32).mmentovai2006-12-061-9/+9
| | | | | | | | | r=waylonis http://groups.google.com/group/airbag-dev/browse_thread/thread/b684b775078d91ca git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@76 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Update reporting strings for exceptions (Issue 88)waylonis2006-12-061-3/+251
| | | | | | | Add time_date_stamp to process state. git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@75 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Module API (#32). r=waylonis, brynermmentovai2006-12-0524-255/+1029
| | | | | | | | | | | | | | | | | | | - Introduces a standard API for dealing with modules. MinidumpModule is now a concrete implementation of this API. Code may interact with single modules using the CodeModule interface, and collections of modules using its container, the CodeModules interface. - CodeModule is used directly by SymbolSupplier implementations and SourceLineResolver. Reliance on the specific implementation in MinidumpModule has been eliminated. - Module lists are now added to ProcessState objects. Module references in each stack frame are now pointers to objects in these module lists. - The sample minidump_stackwalk tool prints the module list after printing all threads' stacks. http://groups.google.com/group/airbag-dev/browse_frm/thread/a9c0550edde54cf8 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@74 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Eliminate usage of vector<>[0] for 0-sized vectors in processor library (#84).mmentovai2006-11-271-112/+126
| | | | | | | | | r=bryner http://groups.google.com/group/airbag-dev/browse_thread/thread/8eb9277ac06425e3 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@72 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Support GUID-less PDBs (#77). r=brynermmentovai2006-11-215-3948/+5
| | | | | | | | | | | | - Handle MDCVInfoPDB20-based PDBs by outputting a signature instead of a guid in the MODULE line. - Identify the OS and CPU in the MODULE line. - Suppress multiple subsequent identical STACK WIN lines. http://groups.google.com/group/airbag-dev/browse_thread/thread/0f54e2c33ed5d82d git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@70 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Use the reentrant versions of strtok() and gmtime() (#79) r=mmentovaibryner2006-11-202-6/+7
| | | | git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@69 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Modify SimpleSymbolSupplier for easier sublcassing (#75).mmentovai2006-11-172-3/+9
| | | | | | | | | Patch by Ted Mielczarek <ted.mielczarek>. r=me http://groups.google.com/group/airbag-dev/browse_thread/thread/34690777576ccf7e git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@67 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Limit use of default namespace in tests and utility programs (#71). r=brynermmentovai2006-11-099-29/+78
| | | | | | | | | | - main is now the only thing you'll find in the default namespace. Everything else has been moved into an unnamed namespace. http://groups.google.com/group/airbag-dev/browse_thread/thread/14130a0284a0307f git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@63 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Suppress handler thread from appearing in MinidumpProcessor's ProcessStatemmentovai2006-11-0614-15401/+22307
| | | | | | | | | | | | (#65). r=bryner - Interface change: (ProcessState).crash_thread is now requesting_thread and will be populated for non-crash dumps. If the requesting thread cannot be determined, requesting_thread is set to -1. http://groups.google.com/group/airbag-dev/browse_thread/thread/c422ec481a2db440 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@62 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Move headers for exported interfaces into src/google_airbag (#51). r=brynermmentovai2006-11-0626-1964/+63
| | | | | | | http://groups.google.com/group/airbag-dev/browse_thread/thread/e01f177386e8794a git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@60 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Symbol file should contain module GUID at beginning (#66). r=brynermmentovai2006-11-068-6/+15
| | | | | | | | | | | | | | | | - The dumped symbol format now begins with a MODULE line identifying the uuid, age, and name of the source pdb file. - The processor ignores MODULE lines, but they are useful in figuring out how to index symbol files in a symbol store. - dump_syms and symupload now both accept either a pdb or exe/dll and will read the pdb regardless. - Figured out that MSSS always represents a module's age in pathnames in hexadecimal, and updated SimpleSymbolSupplier to match. http://groups.google.com/group/airbag-dev/browse_thread/thread/572108d6567edd58 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@59 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Fix minor naming inconsistency (#67). r=mmentovaiwaylonis2006-11-023-47/+47
| | | | git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@58 4c0a9323-5329-0410-9bdc-e9ce6186880e
* minidump_stackwalk should use MinidumpProcessor (#64). r=brynermmentovai2006-10-271-0/+19
| | | | | | | | | | | | - Commit missing test data. http://groups.google.com/group/airbag-dev/browse_thread/thread/cce30a84f6b2d728 --This line, and .those below, will be ignored-- A src/processor/testdata/minidump2.stackwalk.out git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@54 4c0a9323-5329-0410-9bdc-e9ce6186880e
* minidump_stackwalk should use MinidumpProcessor (#64). r=brynermmentovai2006-10-2712-11648/+21846
| | | | | | | | | | | | | | | | | | | | | | | - minidump_stackwalk is now much more useful as a debugging tool and even as a standalone tool. - Reimplementation of minidump_stackwalk around MinidumpProcessor. - minidump_stackwalk displays all pertinent information returned by MinidumpProcessor in the ProcessState. - New PathnameStripper::File static utility method to display only the leaf file name in a pathname, cleaning up minidump_stackwalk's output. - New SimpleSymbolSupplier class, which implements a simple filesystem-based symbol supplier compatible with the layout used by Microsoft Symbol Server and its client cache. - minidump_stackwalk now accepts an optional second argument, a pathname to use as a symbol directory for a SimpleSymbolSupplier. - Updated test data to be compatible with SimpleSymbolSupplier, and added test data for kernel32.pdb. Test data converted from CRLF line endings to LF. http://groups.google.com/group/airbag-dev/browse_thread/thread/cce30a84f6b2d728 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@53 4c0a9323-5329-0410-9bdc-e9ce6186880e
* MinidumpProcessor uses the wrong context for non-crash threads (#62). r=brynermmentovai2006-10-261-1/+10
| | | | | | | http://groups.google.com/group/airbag-dev/browse_thread/thread/74743a397c52b7e2 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@52 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Add MDString to minidump_format.h (#59). r=brynermmentovai2006-10-261-2/+9
| | | | | | | http://groups.google.com/group/airbag-dev/browse_thread/thread/599a47765598cf34 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@50 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Fix minor style problems (#58). r=brynermmentovai2006-10-2521-63/+82
| | | | | | | http://groups.google.com/group/airbag-dev/browse_thread/thread/bbcecab979fa82bc git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@49 4c0a9323-5329-0410-9bdc-e9ce6186880e
* minidump_dump does not print MDRawSystemInfo::processor_revision. No bug.mmentovai2006-10-252-3/+3
| | | | | | | r=bryner git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@48 4c0a9323-5329-0410-9bdc-e9ce6186880e
* MinidumpProcessor should process all threads (#35). r=brynermmentovai2006-10-247-24/+426
| | | | | | | | | | | | | | | | - MinidumpProcessor now processes all threads and returns a new ProcessState object. (Interface change.) - ProcessState contains a CallStack for each thread in the process, and additional information about whether the process crashed, which thread crashed, the reason for the crash, and identifying attributes for the OS and CPU. - MinidumpSystemInfo now contains a GetCPUVendor() method that returns the vendor information from CPUID 0 on x86 processors ("GenuineIntel"). http://groups.google.com/group/airbag-dev/browse_thread/thread/16dd2c981e3361ba git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@47 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Replace auto_ptr with scoped_ptr (#56). r=brynermmentovai2006-10-2310-47/+375
| | | | | | | http://groups.google.com/group/airbag-dev/browse_thread/thread/54c66451ed8e2835 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@46 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Make stack_frame_info vector hold linked_ptrs instead of objects;mmentovai2006-10-2314-140/+190
| | | | | | | | | | | | | make Stackwalker::Walk create and return a CallStack instead of filling a caller-supplied one (#54). r=bryner Interface change: Stackwalker::Walk and MinidumpProcessor::Process now return a new CallStack*. http://groups.google.com/group/airbag-dev/browse_thread/thread/d2bad5d7c115c3fe git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@45 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Add PUBLIC support to SourceLineResolver (resolve function names in Windowsmmentovai2006-10-2011-28/+602
| | | | | | | | | | | system libraries) (#53) StackFrame::function_base is not populated (#49) r=bryner http://groups.google.com/group/airbag-dev/browse_thread/thread/a17d35348e7027bb git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@43 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Handle frame pointer omission, (#21), part 4 (final part!): FPO stackwalker.mmentovai2006-10-2024-1605/+2002
| | | | | | | | | | | | | r=bryner - This change allows Airbag to properly walk win32 stacks produced by code built with MSVC's frame pointer omission optimization (/Oy). This optimization is enabled at /O1 and /O2. - There too many interface and file format changes to list here. http://groups.google.com/group/airbag-dev/browse_thread/thread/85ce85bfa8457ece git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@42 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Reduce calls to SymbolSupplier::GetSymbolFile() (#48).bryner2006-10-164-5/+16
| | | | git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@40 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Handle frame pointer omission (#21), part 3: SourceLineResolver and ↵mmentovai2006-09-289-49/+1165
| | | | | | | | | | | | | | | | | | | PDBSourceLineWriter changes. r=bryner. - PDBSourceLineWriter (dump_syms) outputs stack frame debugging information - SourceLineResolver reads the new information and puts it into a new StackFrameInfo structure, which is stored in a ContainedRangeMap. FillSourceLineInfo passes the StackFrameInfo back to the caller. - The base Stackwalker makes StackFrameInfo data available to subclasses during stackwalking, but does not use this information directly itself. Stackwalkers may access stack_frame_info_ for enhanced stackwalking (this will be part 4). - New test data for the updated dumped-symbol format http://groups.google.com/group/airbag-dev/browse_thread/thread/735f191c9a1a1de4 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@38 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Better testing for Stackwalker (#18). r=brynermmentovai2006-09-251-0/+252
| | | | | | | | | | | | | | - Test StackwalkerX86 and StackwalkerPPC on the current process, if built by a supported compiler (gcc) on a supported (walkable) CPU (x86, ppc). - This test is not enabled by default because of certain optimizations that interfere with it (stack frame reuse, frame pointer omission). See the comments at the top of stackwalker_selftest.cc. To enable this test in the standard "make check" suite, configure with --enable-selftest. http://groups.google.com/group/airbag-dev/browse_thread/thread/2ca1c8e72c809bec git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@35 4c0a9323-5329-0410-9bdc-e9ce6186880e
* ppc stackwalker (#30). r=brynermmentovai2006-09-259-73/+319
| | | | | | | | | | | | - Implementation of PowerPC stackwalker. Tested using stackwalker_selftest (#18). - Hook up processor-side multi-CPU support in MinidumpProcessor and minidump_stackwalk using the new Stackwalker::StackwalkerForCPU method. http://groups.google.com/group/airbag-dev/browse_thread/thread/1c2fa7c5182a77a9 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@34 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Add ppc support to minidump reader (#27). r=bryner.mmentovai2006-09-224-118/+411
| | | | | | | | | | | | - Uses new MDRawContextPPC structure from #25. - Interface change: (MinidumpContext).context() replaced with GetContextCPU to determine CPU type and GetContextX86/GetContextPPC to get CPU-specific context. http://groups.google.com/group/airbag-dev/browse_thread/thread/f6c2e9cab2832b4c git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@33 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Handle frame pointer omission (#21), part 2: PostfixEvaluator. r=bryner.mmentovai2006-09-223-0/+627
| | | | | | | | | | | - A postfix (reverse-Polish) notation expression evaluator that we can feed stack-frame debug information into, crank, and get pointers to the calling frame from. http://groups.google.com/group/airbag-dev/browse_thread/thread/a1d6c5d1fd5fdcb9 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@32 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Relicense to BSD (#29). r=brynermmentovai2006-09-2027-221/+640
| | | | | | | http://groups.google.com/group/airbag-dev/browse_thread/thread/5f19f13fc172c4e0 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@31 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Improve documentation in minidump_format.h (#28). r=brynermmentovai2006-09-201-83/+319
| | | | | | | http://groups.google.com/group/airbag-dev/browse_thread/thread/17840a32fb296638 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@30 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Handle frame pointer omission (#21), part 1: ContainedRangeMap. r=bryner.mmentovai2006-09-208-71/+632
| | | | | | | | | | | | | - ContainedRangeMap is the data structure that will be used to store and look up debugging information for frames by instruction address. The debugging information includes a way to locate the calling frame in the absence of a saved frame pointer. - Restructure RangeMap into an -inl file to match ContainedRangeMap. http://groups.google.com/group/airbag-dev/browse_thread/thread/c5823bfc1828ed42 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@29 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Add ppc types to minidump_format.h (#25). r=waylonismmentovai2006-09-202-35/+178
| | | | | | | | | | | | | | - New MDRawContextPPC struct, based on ppc_thread_state and others in mach/ppc/_types.h. - Add (defining where necessary) MDCPUArchitecture and MDOSPlatform enums to support non-x86/win dumps. Add MD_CONTEXT_* definitions for non-x86 CPUs. - Document a few more fields. http://groups.google.com/group/airbag-dev/browse_thread/thread/963028fc01547851 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@28 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Follow-up to #26: get rid of supplier_data, it's not really needed sincebryner2006-09-207-36/+13
| | | | | | | the caller can implement their own supplier object. r=mmentovai. git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@27 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Get rid of CrashReport, and rename CrashReportProcessor to MinidumpProcessorbryner2006-09-197-126/+137
| | | | | | | | (#26) r=mmentovai. git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@26 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Stylistic changes for RangeMap (#24). r=brynermmentovai2006-09-142-47/+41
| | | | | | | http://groups.google.com/group/airbag-dev/browse_thread/thread/97c378bd175ab7c0 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@25 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Typo fixes. Patch by Ludovic Hirlimann.mmentovai2006-09-141-2/+2
| | | | | | | http://groups.google.com/group/airbag-dev/browse_thread/thread/5d523eea06731806 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@24 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Make SourceLineResolver use RangeMap (#13). r=brynermmentovai2006-09-087-6635/+6793
| | | | | | | | | | | | | | | - Eliminate MemAddrMap from source_line_resolver.cc and adapt it to use RangeMap, also used by minidump.cc. - RangeMap operates on both a base address and a size, where MemAddrMap only used a base address, so the dumped symbol file format is modified to include size information. dump_syms produces these files and SourceLineResolver consumes them. - Provide updated test data conforming to the new dumped symbol format. http://groups.google.com/group/airbag-dev/browse_thread/thread/e9403cf3ad6336a1 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@21 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Change interface for providing files to Minidump (#19). r=brynermmentovai2006-09-085-49/+47
| | | | | | | | | | | | - Interface change: Minidump constructor now accepts a const string& path argument instead of int fd. Minidump will open the file on first Read and close it upon destruction. - Adapt callers to new interface, no longer leaking file descriptors. http://groups.google.com/group/airbag-dev/browse_thread/thread/ff24dbcde7db8ae3 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@20 4c0a9323-5329-0410-9bdc-e9ce6186880e
* addressing follow-up review comments from mark (#17)bryner2006-09-082-5/+4
| | | | git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@19 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Add support to the StackWalker for resolving symbols, using abryner2006-09-0811-28/+10963
| | | | | | | | | | | | caller-implemented SymbolSupplier object to get a symbol file. Add a CrashReportProcessor object which provides a simple API for processing a CrashReport struct, given a SymbolSupplier and a minidump file. r=mmentovai (#17)) git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@18 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Make SourceLineResolver fill a StackFrame rather than using its own struct ↵bryner2006-09-073-69/+59
| | | | | | (#16), r=mmentovai. git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@17 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Conform to style guidelines.mmentovai2006-09-078-593/+572
| | | | | | | | | | | | - In class definitions, one-space indent for public/protected/private. - Multi-line initializer format puts comma at end of line. Also: - Eliminate the long list of friends in Minidump by making swap() public. (People who need to access unknown stream types directly will need access to swap() too.) git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@16 4c0a9323-5329-0410-9bdc-e9ce6186880e
* minidump_dump test is timezone-dependent (#15). r=brynermmentovai2006-09-072-2/+2
| | | | | | | | - Use gmtime (UTC) instead of localtime for human-readable presentation of (MDRawHeader).time_date_stamp. git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@15 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Conform to style guidelines: methods overriding virtual methods should also ↵mmentovai2006-09-061-2/+2
| | | | | | be declared virtual. git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@14 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Initial implementation of x86 stackwalker (#9). r=brynermmentovai2006-09-067-0/+479
| | | | git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@12 4c0a9323-5329-0410-9bdc-e9ce6186880e