aboutsummaryrefslogtreecommitdiff
path: root/src/client/windows
Commit message (Collapse)AuthorAgeFilesLines
* Reinstnate the call to TerminateThread inside ExceptionHandler destructor ↵doshimun2009-01-201-1/+10
| | | | | | | | | | | | | | | | | | | | | | and put 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
* Fix an AppVerifier STOP in OOP server code. In the destructor ofdoshimun2009-01-162-1/+22
| | | | | | | | the OOP server, we need to wait for any pending I/O to be done. git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@308 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Fix some typos in comments.doshimun2009-01-141-4/+4
| | | | git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@307 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Minor fixes to windows exception handler.doshimun2009-01-142-15/+55
| | | | git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@306 4c0a9323-5329-0410-9bdc-e9ce6186880e
* ExceptionHandler class is not handling initialization errors, such as themmentovai2008-12-031-8/+28
| | | | | | | | | | | | | handler thread not being created. Protect the exception handler against failure to create semaphores and a thread handle. Patch by Marc-André (MAD) Decoste, r=me http://code.google.com/p/google-breakpad/issues/detail?id=285 http://codereview.chromium.org/13065 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@300 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Fix warning when converting int to boolnealsid2008-10-101-1/+1
| | | | git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@288 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Generate Windows full memory dumps as a separate file. Patch by Huan Renmmentovai2008-09-161-7/+56
| | | | | | | <huanr@google.com>. r=me git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@285 4c0a9323-5329-0410-9bdc-e9ce6186880e
* In the destructor of ClientInfo, currently the wait on the ↵doshimun2008-06-091-10/+10
| | | | | | | | | | | | | clent_crashed_event is unregistered after the handle is closed. MSDN clearly says that the behavior is undefined in this case. See http://msdn.microsoft.com/en-us/library/ms685061(VS.85).aspx This change contains the fix for that bug. See attched diff. git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@281 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Client process uptime is a very useful metric for crashes. Instead of each ↵doshimun2008-06-062-3/+42
| | | | | | | | | | | 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. I tested this using the test app I have to test OOP stuff. git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@280 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Fix the following bug:doshimun2008-06-051-1/+1
| | | | | | | | | The sender updates the checkpoint file even when the report is not successfully sent. git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@278 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Set the dump thread id and the requesting thread id properties of ↵doshimun2008-05-311-5/+9
| | | | | | | | | | | | | | MDRawBreakpadInfo only in case of in-process dump generation; otherwise the dump processing code of breakpad doesn't identify the crashing thread properly. I am checking this in to-be-reviewed since it is needed urgently in one of the products at Google. git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@276 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Microsoft broke PROCESS_ALL_ACCESS when we build with WINVER=0x600. See ↵doshimun2008-05-152-2/+2
| | | | | | | | | | | | | | | http://nsylvain.blogspot.com/2008/01/winverwin32winnt-mayhem.html for details (second half of the post). Changing PROCESS_ALL_ACCESS to GENERIC_ALL in ClientInfo class when opening the client process handle on the OOP server side. A minor change to pipe name in the test app also. git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@274 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Replace the user of wcscpy_s with safe_wcscpy in ↵doshimun2008-05-085-7/+16
| | | | | | | | | | | | | | common/windows/string_utils-inl.h to make the code compatible for teams that still use VS 2003 to build. Fix a bug in client ClientInfo class that returned CustomClientInfo struct containing a pointer in the client process address space instead of pointer to in-process data structure. git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@271 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Some style guide compliance changes and changed the prototype of the method ↵doshimun2008-05-074-21/+25
| | | | | | to get custom client info in ClientInfo class. git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@270 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Add a convenience method to CustomClientInfo struct to set both name and ↵doshimun2008-05-051-0/+5
| | | | | | value in one call. git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@268 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Add a way for the client apps to specify custom information in case of ↵doshimun2008-05-0510-25/+187
| | | | | | | | | | | | | | out-of-process 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
* Add one more parameter to the ClientDumpRequestCallback in crash generation ↵doshimun2008-04-175-10/+27
| | | | | | | | | | server to pass in the path of the dump file if the dump was generated successfully. git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@262 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Add a parameter to CrashGenerationServer to let the callers set thedoshimun2008-04-123-2/+13
| | | | | | | | | | security attributes on the pipe. This is useful when the process hosting the crash server wants to let processes from other users to connect to it and generate dumps for them. git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@258 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Some cosmetic/style changes to conform to style guidelines. This timedoshimun2008-04-082-23/+23
| | | | | | | | | I waited for the style reviewer to approve all my code so hopefully there should be no more style related check-ins. git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@256 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Fix newlines (#253). rs=ted.mielczarekmmentovai2008-04-0725-4873/+4873
| | | | | | | http://groups.google.com/group/google-breakpad-dev/browse_thread/thread/7e62a299ce3fa222 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@255 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Minor style changes to comply with Google style guidelines.doshimun2008-04-034-34/+39
| | | | git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@252 4c0a9323-5329-0410-9bdc-e9ce6186880e
* TO BE REVIEWED.doshimun@gmail.com2008-03-113-4/+15
| | | | | | | | | | | | | | | | | | | | | | | Have sent an email for code review already but this check-in is urgent to fix potential build breaks. It contains the following changes: - Change project settings for exception_handler.vcproj so that it links in crash_generation.lib so that the applications using exception_handler.lib do not have to link to crash_generation.lib. Make these changes for all 4 build configurations. - Change the test app project settings to not link to crash_generation.lib and only link to exception_handler.lib; again for all four configurations. These changes help the applications that are currently linking to exception_handler.lib in that they don't have to link to one more lib to get out-of-process dump generation functionality. In fact, even if they do not use out-of-process dump generation functionality, after those changes, the apps will need to link with crash_generation.lib anyway in order to build correctly. This change will eliminate that need. git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@248 4c0a9323-5329-0410-9bdc-e9ce6186880e
* This changelist contains the changes to the configuration of Visual Studio ↵doshimun@gmail.com2008-03-105-11/+324
| | | | | | | | | | | | | | | | solution and project files that I added in my last check-in for out-of-process dump generation. My last check-in broke the breakpad_client.sln build for non debug builds since for the new project that I added (crash_generation.vcproj) to that solution, I always only changed project properties for debug build. In fact, I didn't have the static-crt build configurations for the new project either. Similar problems existed for the test application I added, windows/test/crash_generation_app). This changelist contains changes to 2 solution files, 2 vcproj files and 1 .cc file. The fixes to .cc file are to avoid warnings on variables used only in debug modes (in asserts) when building in release modes. git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@247 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Overview:doshimun@gmail.com2008-03-0827-178/+4227
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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
* Remove dependency on ole32 on Windows (#132). Patch by Sorin Jianu ↵mmentovai2008-01-282-10/+32
| | | | | | <sorinj>, r=me. git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@237 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Make Breakpad's debug-exception-ignoring configurable. r=Nicolas Sylvainmmentovai2007-10-182-3/+18
| | | | git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@224 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Make sure ENOENT is defined. Spotted by jfbastien <bourgeoisie>.mmentovai2007-10-101-0/+2
| | | | | | | http://groups.google.com/group/google-breakpad-discuss/browse_thread/thread/47f82fe37b7a46d8 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@222 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Assertion in CrashReportSender (windows) when no checkpoint file is desiredmmentovai2007-09-281-0/+3
| | | | | | | (#216). Patch by Ben Turner <bent.mozilla>. r=me. git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@219 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Add accessor for ExceptionHandler::requesting_thread_id_ (#198). Patch by ↵mmentovai2007-08-171-0/+6
| | | | | | | | | Lucas Eckels. r=me http://groups.google.com/group/google-breakpad-dev/browse_thread/thread/37da2dd8c14659c3 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@203 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Issue 175 - fix permissions on dump file in MinidumpFileWriter. r=mentoted.mielczarek2007-07-051-2/+2
| | | | git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@197 4c0a9323-5329-0410-9bdc-e9ce6186880e
* These should be int to allow them to be ORed together. Ted, please review.mmentovai2007-07-022-3/+3
| | | | git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@194 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Allow finer control over installed handler types (#193). r=ted.mielczarekmmentovai2007-07-022-27/+50
| | | | | | | http://groups.google.com/group/google-breakpad-dev/browse_thread/thread/992a1bb09dc58a32 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@193 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Add an API to pass exception information into the handler (#192).mmentovai2007-07-022-1/+9
| | | | | | | | | r=ted.mielczarek http://groups.google.com/group/google-breakpad-dev/browse_thread/thread/42e9ee1a636bca8b git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@191 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Add an optional per-day limit to the number of crash reports sent. The statebryner2007-05-212-10/+125
| | | | | | | | is maintained in an app-specified checkpoint file. (#174, r=mmentovai) git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@171 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Issue 162 - handle pure virtual function calls in VC++. r=mentoted.mielczarek2007-05-102-0/+42
| | | | git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@166 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Replace GB_WSU_SAFE_SWPRINTF_TERMINATE with inline code (#145 followup).mmentovai2007-04-041-1/+4
| | | | | | | | | r=bryner http://groups.google.com/group/google-breakpad-dev/browse_thread/thread/f77da3d219cf9388 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@140 4c0a9323-5329-0410-9bdc-e9ce6186880e
* vswprintf causes Purify to fail (#145). r=darinmmentovai2007-03-301-3/+3
| | | | | | | http://groups.google.com/group/google-breakpad-dev/browse_thread/thread/88e18d9fac4eee22 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@135 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Fix exception handler build with MSVC versions prior to 2005. r=mmentovai.bryner2007-03-051-1/+4
| | | | git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@123 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Rename Airbag to Breakpad.mmentovai2007-02-146-32/+32
| | | | git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@122 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Airbag windows client didn't trap VC8 parameter validation errors. Now itmmentovai2007-02-072-53/+209
| | | | | | | | | does. (#120) r=bryner. http://groups.google.com/group/airbag-dev/browse_thread/thread/3f21d0e379e32771 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@120 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Pass the exception record (EXCEPTION_POINTERS*) to callback functions frommmentovai2007-01-122-6/+9
| | | | | | | | | | 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
* Allows the caller of CrashReportSender::SendCrashReport() to determine thatincrementalist2007-01-032-12/+30
| | | | | | | | | | | the server rejected a crash report, by changing the return value from a boolean to a tri-state enum. Fixes issue #101. Reviewed by mmentovai. git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@99 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Removing CRs from #81. Hey, how'd those get in there?mmentovai2006-12-081-24/+24
| | | | git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@82 4c0a9323-5329-0410-9bdc-e9ce6186880e
* This patch fixes Airbag issue #44.incrementalist2006-12-082-4/+9
| | | | | | | | | | | | | | | | | | | Summary of this patch: * It adds a new wstring* parameter to the end of both SendCrashReport() and HTTPUpload::SendRequest(), which can be NULL. * If the request isn't successful, the result parameter isn't touched. * It adds HTTPUpload::UTF8ToWide() to allow the response to be returned as a wstring, * It changes the return value of SendRequest (and by extension, SendCrashReport) so that if the size of the response body isn't exactly the same as the value given in the Content-Length header, the return value is false (in addition to the previous semantics). * It also updates symupload.cc to account for the new parameter in SendRequest(). git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@81 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Allow exception handler callbacks more flexibility (#81). r=brynermmentovai2006-12-072-82/+270
| | | | | | | | | | | | | | | | | | | | | - 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
* Don't use CRT in exception handler code (#86). r=brynermmentovai2006-11-282-8/+14
| | | | | | | http://groups.google.com/group/airbag-dev/browse_thread/thread/f671277ebd6ea7fd git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@73 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Airbag client libraries should compile under MSVC .NET 2003/7.1 (#64).mmentovai2006-11-152-2/+9
| | | | | | | | | r=bryner http://groups.google.com/group/airbag-dev/browse_thread/thread/b838faeb50f71818 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@64 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Minidumps should indicate which thread generated the dump and which requestedmmentovai2006-11-062-2/+26
| | | | | | | | | dump generation (#57). r=bryner http://groups.google.com/group/airbag-dev/browse_thread/thread/f11758d171261184 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@61 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Windows exception handler does not survive stack overflows (#34). r=brian,mmentovai2006-10-312-11/+145
| | | | | | | | | | | | 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. http://groups.google.com/group/airbag-dev/browse_thread/thread/3935e339d8354a75 git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@57 4c0a9323-5329-0410-9bdc-e9ce6186880e
* Disable exception handling warnings in Windows client code (#38).mmentovai2006-10-273-0/+15
| | | | | | | | | Patch by Ted Mielczarek. r=me http://groups.google.com/group/airbag-dev/browse_thread/thread/133814673f75d5fa git-svn-id: http://google-breakpad.googlecode.com/svn/trunk@56 4c0a9323-5329-0410-9bdc-e9ce6186880e