Ted Mielczarek:
> You could try backing out r989, although Mozilla has been running with that
> patch for months without issue.
Me:
> src/client/windows/handler/exception_handler.cc in r989 appears to have
> formatting problems, an unwanted property change, and no real Breakpad review
> history, so maybe we should back it out anyway until the proper process is
> followed.
NACL Tests nacl_integration failures:
http://build.chromium.org/p/chromium/builders/NACL%20Tests/builds/30138
chrome src/native_client/tests/inbrowser_crash_test/crash_dump_tester.py says
that the observed failures are a symptom of crash_service.exe itself crashing.
git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@998 4c0a9323-5329-0410-9bdc-e9ce6186880e
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
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
Having an exception of interest makes the resultant minidumps look just like
crash dumps, in that the processor can identify the "crashing" tread.
This means such minidumps can be classified by the stack signature, in contrast to the current state of things, in which all such dumps get lumped on a single pile.
git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@557 4c0a9323-5329-0410-9bdc-e9ce6186880e
std::vector::erase() invalidates the iterator, so we need
to advance the iterator by using the return value of erase().
R=nealsid
A=wtc
git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@370 4c0a9323-5329-0410-9bdc-e9ce6186880e
the graceful code inside a #ifdef.
The problem is:
If ExceptionHandler is created and destroyed in DllMain, then the previous change to
remove the call to TerminateThread will lead to a deadlock. This is because inside
DllMain the loader lock is acquired, and the previous change waits for the handler
thread to exit in the destructor, that is with the loader lock acquired. But the
handler thread cannot finish until it gets the loader lock to call DllMain for
THREAD_DETACH.
With this change, we add conditional compilation so that clients that want to
avoid the call to terminate thread can do it by defining the appropriate preprocessor
variable.
git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@309 4c0a9323-5329-0410-9bdc-e9ce6186880e
scenarios that the OOP server can use in whatever way it wants to.
Fix a bug in CrashGenerationserver where CreateNamedPipe failure was not checked correctly.
TODO in near future: Add a custom stream to minidump files for the custom information.
git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@267 4c0a9323-5329-0410-9bdc-e9ce6186880e
Implement out-of-process dump generation for Windows platform.
Details:
- Created a lib, crash_generation.lib, that implements the out-of-process dump generation protocol.
- The lib code is under client/windows/crash_generation folder and is organized in the following way:
- CrashGenerationServer class (crash_generation_server.h/.cc) implements the server side of
the protocol.
- CrashGenerationClient class (crash_generation_client.h/.cc) implements the client side of
the protocol.
- MinidumpGenerator class (minidump_generator.h/.cc) serves as an abstractino for generating
dump files using Windows APIs, coming up with new file names by creating GUIDs, etc.
- ProtocolMessage class (ipc_protocol.h) represents the message format between the client and server
for pipe IPC.
- Server allows one client at a time on the pipe in the current implementation.
- ReadMe.txt explains the state machine the server uses to serve clients.
- ExceptionHandler is modified and a new constructor is added that allows specifying the pipe name. If the
pipe name is NULL, the behavior is backward compatible - in-process dump generation is done as before. If
the pipe name is specified, out-of-process dump generation registration is attempted. If that fails, the
behavior is again backward compatible.
- If out-of-process registration succeeds, all write dump requests, direct or indirect, are directed to
crash server process that served the registration request. NOTE that the explicit dump requests made by
calling the static method of ExceptionHandler are not directed to theserver.
- client/windows/tests/crash_generation_app implements a simple Win32 GUI application to help test the
out-of-process dump generation client and server. Typical use of the app is to start one instance, click
Server --> Start and then start the other instance. The other instance will register with the first
instance automatically at start-up. Then the second instance can be used to request various typoes of
dump requests by using options under the Client menu.
git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@244 4c0a9323-5329-0410-9bdc-e9ce6186880e
ExceptionHandler on Windows. Patch by John Abd-El-Malek. r=me
Interface change: post-dump and pre-dump (filter) callbacks now must accept
an additional EXCEPTION_POINTERS* argument.
git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@103 4c0a9323-5329-0410-9bdc-e9ce6186880e
- 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).
4771825ced
git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@79 4c0a9323-5329-0410-9bdc-e9ce6186880e
thanks also to darin
- All minidump writing is now done on a dedicated thread. When a stack
overflow exception occurs, the only work that needs to be done on the
exception thread will easily fit within the guard page.
3935e339d8
git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@57 4c0a9323-5329-0410-9bdc-e9ce6186880e
- All Windows code now builds with WIN32_LEAN_AND_MEAN by default.
- Header inclusion is adjusted as needed.
Remove use of UuidToString (#39)
- Also breaks dependency on RpcStringFree and therefore rpcrt4.lib.
r=bryner
30f844cfc7
git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@51 4c0a9323-5329-0410-9bdc-e9ce6186880e