breakpad/src/client/windows/crash_generation
hansl@google.com 8cf0a52bec Moved exception_handler_test to the more aptly named exception_handler_death_test. It doesn't test anything else than death and exit.
Created the exception_handler_test that test the generation of dump and the dumps themselves.
Moved all dump analysis code from minidump to its right class DumpAnalysis. The class is used by both minidump_test and exception_handler_test. The tests are way simpler that way (ie. no handling of HANDLE).
minidump_test now uses the minidump_generator class instead of using Win32. It works well and pass all tests.
exception_handler now passes both the exception and assertion infos to the client to generate the dump. If one is NULL it's going to be handled correctly.
crash_generation_client can now RequestDump with both exception and assertion info.
minidump_generator returns both the mini and full dump string pointers, and output both (or either) depending on which was generated.
All original interfaces and method signature are still there, but call the new functions if possible.

Review URL: http://codereview.chromium.org/1994015

git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@596 4c0a9323-5329-0410-9bdc-e9ce6186880e
2010-05-12 17:51:21 +00:00
..
client_info.cc In the destructor of ClientInfo, currently the wait on the clent_crashed_event is 2008-06-09 23:38:24 +00:00
client_info.h Client process uptime is a very useful metric for crashes. Instead of each client process having to keep track of uptime and report it whenever a crash happens, integrate this feature into breakpad OOP code so that all clients get it for free. 2008-06-06 21:41:32 +00:00
crash_generation_client.cc Moved exception_handler_test to the more aptly named exception_handler_death_test. It doesn't test anything else than death and exit. 2010-05-12 17:51:21 +00:00
crash_generation_client.h Moved exception_handler_test to the more aptly named exception_handler_death_test. It doesn't test anything else than death and exit. 2010-05-12 17:51:21 +00:00
crash_generation_server.cc Check RegisterWaitForSingleObject return in CrashGenerationServer::Start. 2009-09-28 23:53:28 +00:00
crash_generation_server.h Fix an AppVerifier STOP in OOP server code. In the destructor of 2009-01-16 22:37:48 +00:00
crash_generation.gyp Replacing solutions with gyp files. Moving tests for windows clients in unittests. 2010-05-03 20:21:40 +00:00
minidump_generator.cc Moved exception_handler_test to the more aptly named exception_handler_death_test. It doesn't test anything else than death and exit. 2010-05-12 17:51:21 +00:00
minidump_generator.h Moved exception_handler_test to the more aptly named exception_handler_death_test. It doesn't test anything else than death and exit. 2010-05-12 17:51:21 +00:00
ReadMe.txt Fix newlines (#253). rs=ted.mielczarek 2008-04-07 21:50:57 +00:00

=========================================================================
 State machine transitions for the Crash Generation Server
=========================================================================

=========================================================================
               |
 STATE         | ACTIONS
               |
=========================================================================
 ERROR         | Clean up resources used to serve clients.
               | Always remain in ERROR state.
-------------------------------------------------------------------------
 INITIAL       | Connect to the pipe asynchronously.
               | If connection is successfully queued up asynchronously,
               | go into CONNECTING state.
               | If connection is done synchronously, go into CONNECTED
               | state.
               | For any unexpected problems, go into ERROR state.
-------------------------------------------------------------------------
 CONNECTING    | Get the result of async connection request.
               | If I/O is still incomplete, remain in the CONNECTING
               | state.
               | If connection is complete, go into CONNECTED state.
               | For any unexpected problems, go into DISCONNECTING state.
-------------------------------------------------------------------------
 CONNECTED     | Read from the pipe asynchronously.
               | If read request is successfully queued up asynchronously,
               | go into READING state.
               | For any unexpected problems, go into DISCONNECTING state.
-------------------------------------------------------------------------
 READING       | Get the result of async read request.
               | If read is done, go into READ_DONE state.
               | For any unexpected problems, go into DISCONNECTING state.
-------------------------------------------------------------------------
 READ_DONE     | Register the client, prepare the reply and write the
               | reply to the pipe asynchronously.
               | If write request is successfully queued up asynchronously,
               | go into WRITING state.
               | For any unexpected problems, go into DISCONNECTING state.
-------------------------------------------------------------------------
 WRITING       | Get the result of the async write request.
               | If write is done, go into WRITE_DONE state.
               | For any unexpected problems, go into DISCONNECTING state.
-------------------------------------------------------------------------
 WRITE_DONE    | Read from the pipe asynchronously (for an ACK).
               | If read request is successfully queued up asynchonously,
               | go into READING_ACK state.
               | For any unexpected problems, go into DISCONNECTING state.
-------------------------------------------------------------------------
 READING_ACK   | Get the result of the async read request.
               | If read is done, perform action for successful client
               | connection.
               | Go into DISCONNECTING state.
-------------------------------------------------------------------------
 DISCONNECTING | Disconnect from the pipe, reset the event and go into
               | INITIAL state and signal the event again. If anything
               | fails, go into ERROR state.
=========================================================================