summaryrefslogtreecommitdiffstats
path: root/third_party/rust/crash-context/src/mac.rs
blob: fcbe97df69b05bf02c86cad75fcbc170e1bdd665 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
pub mod guard;
pub mod ipc;
pub mod resource;

use mach2::mach_types as mt;

/// Information on the exception that caused the crash
#[derive(Copy, Clone, Debug)]
pub struct ExceptionInfo {
    /// The exception kind
    pub kind: u32,
    /// The exception code
    pub code: u64,
    /// Optional subcode with different meanings depending on the exception type
    /// * `EXC_BAD_ACCESS` - The address that caused the exception
    /// * `EXC_GUARD` - The unique guard identifier that was guarding a resource
    /// * `EXC_RESOURCE` - Additional details depending on the resource type
    pub subcode: Option<u64>,
}

/// Full Macos crash context
#[derive(Debug)]
pub struct CrashContext {
    /// The process which crashed
    pub task: mt::task_t,
    /// The thread in the process that crashed
    pub thread: mt::thread_t,
    /// The thread that handled the exception. This may be useful to ignore.
    pub handler_thread: mt::thread_t,
    /// Optional exception information
    pub exception: Option<ExceptionInfo>,
}