From d93f0b02f2792ff421dac5c9901b649714fe348c Mon Sep 17 00:00:00 2001 From: Mark Mentovai Date: Wed, 19 Apr 2017 14:40:41 -0400 Subject: [PATCH] Update documentation to master f487da4ff2c4 --- ...lasscrashpad_1_1test_1_1ChildLauncher.html | 25 ++++++++-- doc/generated/doxygen/classes.html | 6 +-- doc/generated/doxygen/hierarchy.html | 10 ++-- doc/generated/doxygen/namespacecrashpad.html | 49 ++++++++++++++++++- .../doxygen/namespacemembers_func.html | 5 +- doc/generated/doxygen/namespacemembers_s.html | 5 +- doc/generated/doxygen/search/all_11.js | 2 +- doc/generated/doxygen/search/all_12.js | 1 + doc/generated/doxygen/search/all_13.js | 4 +- doc/generated/doxygen/search/all_15.js | 2 +- doc/generated/doxygen/search/all_16.js | 2 +- doc/generated/doxygen/search/classes_10.js | 2 +- doc/generated/doxygen/search/functions_12.js | 1 + doc/generated/doxygen/search/variables_13.js | 2 +- .../doxygen/simulate__crash__win_8h.html | 2 +- 15 files changed, 95 insertions(+), 23 deletions(-) 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 

Detailed Description

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().

Member Function Documentation

+ +

◆ 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)   
  i  
-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::TaskMemoryAccesses the memory of another Mach task  Ccrashpad::process_types::TEB< Traits >  Ccrashpad::test::TestPathsFunctions to obtain paths from within tests - Ccrashpad::ProcessReader::ThreadContains information about a thread that belongs to a task (process) - Ccrashpad::ThreadBasic thread abstraction. Users should derive from this class and implement ThreadMain() - Ccrashpad::internal::WorkerThreadImpl - Ccrashpad::SessionEndWatcherCreates a hidden window and waits for a WM_ENDSESSION message, indicating that the session is ending and the application should terminate - Ccrashpad::ProcessReaderWin::ThreadContains information about a thread that belongs to a process + Ccrashpad::ThreadBasic thread abstraction. Users should derive from this class and implement ThreadMain() + Ccrashpad::internal::WorkerThreadImpl + Ccrashpad::SessionEndWatcherCreates a hidden window and waits for a WM_ENDSESSION message, indicating that the session is ending and the application should terminate + Ccrashpad::ProcessReaderWin::ThreadContains information about a thread that belongs to a process + Ccrashpad::ProcessReader::ThreadContains information about a thread that belongs to a task (process)  Ccrashpad::process_types::THREAD_BASIC_INFORMATION< Traits >  Ccrashpad::ThreadLogMessagesCaptures 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.

@@ -5552,6 +5555,48 @@ template<typename T >
Returns
XattrStatus
+ + + +

◆ SafeTerminateProcess()

+ +
+
+
Enumerator
kTerminationCodeCrashNoDump 

The crash handler did not respond, and the client self-terminated.

+ + + + +
+ + + + + + + + + + + + + + + + + + +
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 -