| Index: util/mach/exc_server_variants.h
|
| diff --git a/util/mach/exc_server_variants.h b/util/mach/exc_server_variants.h
|
| index aaac36ad75f13e60480e33a2ad4fbef172041c50..95d1c12d4e72d5ea00e908eda3ed99f5f5579b80 100644
|
| --- a/util/mach/exc_server_variants.h
|
| +++ b/util/mach/exc_server_variants.h
|
| @@ -150,6 +150,17 @@ class UniversalMachExcServer final : public MachMessageServer::Interface {
|
| //! schedulable, so there is no point in setting the states of any of its
|
| //! threads.
|
| //!
|
| +//! On OS X 10.11, the `MACH_RCV_PORT_DIED` mechanism cannot be used with an
|
| +//! `EXC_CRASH` handler without triggering an undesirable `EXC_CORPSE_NOTIFY`
|
| +//! exception. In that case, `KERN_SUCCESS` is always returned. Because this
|
| +//! function may return `KERN_SUCCESS` for a state-carrying exception, it is
|
| +//! important to ensure that the state returned by a state-carrying exception
|
| +//! handler is valid, because it will be passed to `thread_set_status()`.
|
| +//! ExcServerCopyState() may be used to achieve this.
|
| +//!
|
| +//! \param[in] exception The exception type passed to the exception handler.
|
| +//! This may be taken directly from the \a exception parameter of
|
| +//! internal::SimplifiedExcServer::Interface::CatchException(), for example.
|
| //! \param[in] behavior The behavior of the exception handler as invoked. This
|
| //! may be taken directly from the \a behavior parameter of
|
| //! internal::SimplifiedExcServer::Interface::CatchException(), for example.
|
| @@ -160,10 +171,11 @@ class UniversalMachExcServer final : public MachMessageServer::Interface {
|
| //!
|
| //! \return `KERN_SUCCESS` or `MACH_RCV_PORT_DIED`. `KERN_SUCCESS` is used when
|
| //! \a behavior is not a state-carrying behavior, or when it is a
|
| -//! state-carrying behavior and \a set_thread_state is `true`.
|
| -//! `MACH_RCV_PORT_DIED` is used when \a behavior is a state-carrying
|
| -//! behavior and \a set_thread_state is `false`.
|
| -kern_return_t ExcServerSuccessfulReturnValue(exception_behavior_t behavior,
|
| +//! state-carrying behavior and \a set_thread_state is `true`, or for
|
| +//! `EXC_CRASH` exceptions on OS X 10.11 and later. Otherwise,
|
| +//! `MACH_RCV_PORT_DIED` is used.
|
| +kern_return_t ExcServerSuccessfulReturnValue(exception_type_t exception,
|
| + exception_behavior_t behavior,
|
| bool set_thread_state);
|
|
|
| //! \brief Copies the old state to the new state for state-carrying exceptions.
|
|
|