Crashpad

Public Member Functions | List of all members
crashpad::UniversalMachExcServer::Interface Class Referenceabstract

An interface that the different request messages that are a part of the `exc` and `mach_exc` Mach subsystems can be dispatched to. More...

`#include "util/mach/exc_server_variants.h"`

Inheritance diagram for crashpad::UniversalMachExcServer::Interface:

## Public Member Functions
virtual kern_return_t | CatchMachException (exception_behavior_t behavior, exception_handler_t exception_port, thread_t thread, task_t task, exception_type_t exception, const mach_exception_data_type_t *code, mach_msg_type_number_t code_count, thread_state_flavor_t *flavor, ConstThreadState old_state, mach_msg_type_number_t old_state_count, thread_state_t new_state, mach_msg_type_number_t *new_state_count, const mach_msg_trailer_t *trailer, bool *destroy_complex_request)=0
| Handles exceptions raised by `exception_raise()`, `exception_raise_state()`, `exception_raise_state_identity()`, `mach_exception_raise()`, `mach_exception_raise_state()`, and `mach_exception_raise_state_identity()`. More...

## Detailed Description

An interface that the different request messages that are a part of the `exc` and `mach_exc` Mach subsystems can be dispatched to.

## Member Function Documentation

## ◆ CatchMachException()

virtual kern_return_t crashpad::UniversalMachExcServer::Interface::CatchMachException | ( | exception_behavior_t | behavior,
|  | exception_handler_t | exception_port,
|  | thread_t | thread,
|  | task_t | task,
|  | exception_type_t | exception,
|  | const mach_exception_data_type_t * | code,
|  | mach_msg_type_number_t | code_count,
|  | thread_state_flavor_t * | flavor,
|  | ConstThreadState | old_state,
|  | mach_msg_type_number_t | old_state_count,
|  | thread_state_t | new_state,
|  | mach_msg_type_number_t * | new_state_count,
|  | const mach_msg_trailer_t * | trailer,
|  | bool * | destroy_complex_request
| ) |  |
| pure virtual

Handles exceptions raised by `exception_raise()`, `exception_raise_state()`, `exception_raise_state_identity()`, `mach_exception_raise()`, `mach_exception_raise_state()`, and `mach_exception_raise_state_identity()`.

For convenience in implementation, these different “behaviors” of exception messages are all mapped to a single interface method. The exception’s original “behavior” is specified in the behavior parameter. Only parameters that were supplied in the request message are populated, other parameters are set to reasonable default values.

This behaves equivalently to a `catch_exception_raise_state_identity()` function used with `exc_server()`, or a `catch_mach_exception_raise_state_identity()` function used with `mach_exc_server()`. Except as noted, the parameters and return value are equivalent to those of these other functions.

Parameters

  [in] | behavior | `EXCEPTION_DEFAULT`, `EXCEPTION_STATE`, or `EXCEPTION_STATE_IDENTITY`, possibly with `MACH_EXCEPTION_CODES` ORed in. This identifies which exception request message was processed and thus which other parameters are valid.
  [in] | exception_port |
  [in] | thread |
  [in] | task |
  [in] | exception |
  [in] | code |
  [in] | code_count |
  [in,out] | flavor |
  [in] | old_state |
  [in] | old_state_count |
  [out] | new_state |
  [out] | new_state_count |
  [in] | trailer | The trailer received with the request message.
  [out] | destroy_complex_request | `true` if the request message is to be destroyed even when this method returns success. See MachMessageServer::Interface.

Returns
  A code indicating whether the exception was handled. See ExcServerSuccessfulReturnValue() for success codes. On failure, a code such as `KERN_FAILURE`.

Implemented in crashpad::CrashReportExceptionHandler.

The documentation for this class was generated from the following file:

- util/mach/exc_server_variants.h