diff --git a/doc/generated/doxygen/classcrashpad_1_1test_1_1ChildLauncher.html b/doc/generated/doxygen/classcrashpad_1_1test_1_1ChildLauncher.html
index 0e14f212..155503e2 100644
--- a/doc/generated/doxygen/classcrashpad_1_1test_1_1ChildLauncher.html
+++ b/doc/generated/doxygen/classcrashpad_1_1test_1_1ChildLauncher.html
@@ -82,9 +82,8 @@ Public Member Functions
ChildLauncher (const std::wstring &executable, const std::wstring &command_line) |
| Creates the object. executable will be escaped and prepended to command_line to build the command line of the child.
|
|
-
-void | Start () |
- | Starts the child process, after which the handle functions below will be valid.
|
+void | Start () |
+ | Starts the child process, after which the handle functions below will be valid. More...
|
|
DWORD | WaitForExit () |
| Waits for the child process to exit. More...
|
@@ -109,6 +108,26 @@ HANDLE
Creates a child process for testing. Uses gtest ASSERT_* to indicate failure. The child's output is passed through a pipe and is available via stdout_read_handle(), and the child's input is attached to a second pipe available via stdin_write_handle().
+
+◆ Start()
+
+
+
+
+
+ void crashpad::test::ChildLauncher::Start |
+ ( |
+ | ) |
+ |
+
+
+
+
+ Starts the child process, after which the handle functions below will be valid.
+ Errors are signaled via gtest assertions. This method may be invoked via ASSERT_NO_FATAL_FAILURE() to assert that it succeeds.
+
+
+
◆ WaitForExit()
diff --git a/doc/generated/doxygen/classes.html b/doc/generated/doxygen/classes.html
index ee6c79f4..1a443e09 100644
--- a/doc/generated/doxygen/classes.html
+++ b/doc/generated/doxygen/classes.html
@@ -91,10 +91,10 @@ $(function() {
| ChildLauncher (crashpad::test) | WinChildProcess::Handles (crashpad::test) | MinidumpCrashpadInfo (crashpad) | PointerVector (crashpad) | TestSystemSnapshot (crashpad::test) |
ChildPortHandshake (crashpad) | HandleSnapshot (crashpad) | MinidumpCrashpadInfoWriter (crashpad) | PROCESS_BASIC_INFORMATION (crashpad::process_types) | TestThreadSnapshot (crashpad::test) |
ChildPortServer (crashpad) | HTTPBodyStream (crashpad) | MinidumpExceptionWriter (crashpad) | ProcessInfo (crashpad) | TestUInt32MinidumpWritable (crashpad::test) |
-CLIENT_ID (crashpad::process_types) | HTTPMultipartBuilder (crashpad) | MinidumpFileWriter (crashpad) | ProcessMemory (crashpad) | ProcessReader::Thread (crashpad) |
-ClientData (crashpad::internal) | HTTPTransport (crashpad) | MinidumpHandleDataWriter (crashpad) | ProcessReader (crashpad) | Thread (crashpad) |
+CLIENT_ID (crashpad::process_types) | HTTPMultipartBuilder (crashpad) | MinidumpFileWriter (crashpad) | ProcessMemory (crashpad) | Thread (crashpad) |
+ClientData (crashpad::internal) | HTTPTransport (crashpad) | MinidumpHandleDataWriter (crashpad) | ProcessReader (crashpad) | ProcessReaderWin::Thread (crashpad) |
ClientToServerMessage (crashpad) |
- | MinidumpMemoryInfoListWriter (crashpad) | ProcessReaderWin (crashpad) | ProcessReaderWin::Thread (crashpad) |
+MinidumpMemoryInfoListWriter (crashpad) | ProcessReaderWin (crashpad) | ProcessReader::Thread (crashpad) |
CodeViewRecordPDB20 (crashpad) | MinidumpMemoryListWriter (crashpad) | ProcessSnapshot (crashpad) | THREAD_BASIC_INFORMATION (crashpad::process_types) |
CodeViewRecordPDB70 (crashpad) | IMAGE_DEBUG_MISC | MinidumpMiscInfoWriter (crashpad) | ProcessSnapshotMac (crashpad) | ThreadLogMessages (crashpad) |
CompositeHTTPBodyStream (crashpad) | InitialClientData (crashpad) | MinidumpModuleCodeViewRecordPDB20Writer (crashpad) | ProcessSnapshotMinidump (crashpad) | ThreadSafeVector (crashpad) |
diff --git a/doc/generated/doxygen/hierarchy.html b/doc/generated/doxygen/hierarchy.html
index d689bc91..104f00a0 100644
--- a/doc/generated/doxygen/hierarchy.html
+++ b/doc/generated/doxygen/hierarchy.html
@@ -338,11 +338,11 @@ $(function() {
Ccrashpad::TaskMemory | Accesses the memory of another Mach task |
Ccrashpad::process_types::TEB< Traits > | |
Ccrashpad::test::TestPaths | Functions to obtain paths from within tests |
- Ccrashpad::ProcessReader::Thread | Contains information about a thread that belongs to a task (process) |
- ►Ccrashpad::Thread | Basic thread abstraction. Users should derive from this class and implement ThreadMain() |
- Ccrashpad::internal::WorkerThreadImpl | |
- Ccrashpad::SessionEndWatcher | Creates a hidden window and waits for a WM_ENDSESSION message, indicating that the session is ending and the application should terminate |
- Ccrashpad::ProcessReaderWin::Thread | Contains information about a thread that belongs to a process |
+ ►Ccrashpad::Thread | Basic thread abstraction. Users should derive from this class and implement ThreadMain() |
+ Ccrashpad::internal::WorkerThreadImpl | |
+ Ccrashpad::SessionEndWatcher | Creates a hidden window and waits for a WM_ENDSESSION message, indicating that the session is ending and the application should terminate |
+ Ccrashpad::ProcessReaderWin::Thread | Contains information about a thread that belongs to a process |
+ Ccrashpad::ProcessReader::Thread | Contains information about a thread that belongs to a task (process) |
Ccrashpad::process_types::THREAD_BASIC_INFORMATION< Traits > | |
Ccrashpad::ThreadLogMessages | Captures log messages produced on the current thread during an object’s lifetime |
Ccrashpad::ThreadSafeVector< T > | A wrapper for a std::vector<> that can be accessed safely from multiple threads |
diff --git a/doc/generated/doxygen/namespacecrashpad.html b/doc/generated/doxygen/namespacecrashpad.html
index 1ac5c278..2e7537b1 100644
--- a/doc/generated/doxygen/namespacecrashpad.html
+++ b/doc/generated/doxygen/namespacecrashpad.html
@@ -657,7 +657,7 @@ Enumerations
|
enum | |
|
-enum | TerminationCodes : unsigned int |
| Crashpad-specific codes that are used as arguments to TerminateProcess() in unusual circumstances. More...
|
+enum | TerminationCodes : unsigned int |
| Crashpad-specific codes that are used as arguments to SafeTerminateProcess() or TerminateProcess() in unusual circumstances. More...
|
|
enum | |
@@ -1073,6 +1073,9 @@ bool ReadMemoryInfo (H
| const void * | GetSecurityDescriptorForNamedPipeInstance (size_t *size) |
| Returns the SECURITY_DESCRIPTOR blob that will be used for creating the connection pipe in CreateNamedPipeInstance(). More...
|
|
+bool | SafeTerminateProcess (HANDLE process, UINT exit_code) |
+ | Calls TerminateProcess() . More...
|
+ |
timeval | FiletimeToTimevalEpoch (const FILETIME &filetime) |
| Convert Windows FILETIME to timeval , converting from Windows epoch to POSIX epoch.
|
@@ -1950,7 +1953,7 @@ template<typename T , size_t Alignment = ALIGNOF(T)>
-
Crashpad-specific codes that are used as arguments to TerminateProcess()
in unusual circumstances.
+
Crashpad-specific codes that are used as arguments to SafeTerminateProcess() or TerminateProcess()
in unusual circumstances.
Enumerator |
---|
kTerminationCodeCrashNoDump | The crash handler did not respond, and the client self-terminated.
|
@@ -5552,6 +5555,48 @@ template<typename T >
- Returns
- XattrStatus
+
+
+
+◆ SafeTerminateProcess()
+
+
+
+
+
+
+
+
+ bool crashpad::SafeTerminateProcess |
+ ( |
+ HANDLE |
+ process, |
+
+
+ |
+ |
+ UINT |
+ exit_code |
+
+
+ |
+ ) |
+ | |
+
+
+ |
+
+inline |
+
+
+
+
+
Calls TerminateProcess()
.
+
TerminateProcess()
has been observed in the wild as being patched badly on 32-bit x86: it’s patched with code adhering to the cdecl
(caller clean-up) convention, although it’s supposed to be stdcall
(callee clean-up). The mix-up means that neither caller nor callee perform parameter clean-up from the stack, causing the stack pointer to have an unexpected value on return from the patched function. This typically results in a crash shortly thereafter. See Crashpad bug 179.
+
On 32-bit x86, this replacement function calls TerminateProcess()
without making any assumptions about the stack pointer on its return. As such, it’s compatible with the badly patched cdecl
version as well as the native stdcall
version (and other less badly patched versions).
+
Elsewhere, this function calls TerminateProcess()
directly without any additional fanfare.
+
Call this function instead of TerminateProcess()
anywhere that TerminateProcess()
would normally be called.
+
diff --git a/doc/generated/doxygen/namespacemembers_func.html b/doc/generated/doxygen/namespacemembers_func.html
index 1c38ec5a..391b6583 100644
--- a/doc/generated/doxygen/namespacemembers_func.html
+++ b/doc/generated/doxygen/namespacemembers_func.html
@@ -556,6 +556,9 @@ $(function() {
- s -
-
Value:do { \
CONTEXT context; \
crashpad::CaptureContext(&context);
\ } while (false)
static void DumpWithoutCrash(const CONTEXT &context)
Requests that the handler capture a dump even though there hasn't been a crash.
Definition: crashpad_client_win.cc:717
+
Value:do { \
CONTEXT context; \
crashpad::CaptureContext(&context);
\ } while (false)
static void DumpWithoutCrash(const CONTEXT &context)
Requests that the handler capture a dump even though there hasn't been a crash.
Definition: crashpad_client_win.cc:718
Captures the CPU context and captures a dump without an exception.