Where are core dumps written on Mac?

coredump, macos, signals, unix

Solution

There is a great explanation by `Quinn “The Eskimo!”` on Apple's forums https://developer.apple.com/forums/thread/694233

I roughly followed that guide. Here are the steps that I did.

Grant write all access to the `/cores` dir

PROMPT> ls -la / | grep cores
drwxr-xr-x    2 root  wheel    64 Dec  8  2021 cores
PROMPT> sudo chmod 1777 /cores
PROMPT> ls -la / | grep cores
drwxrwxrwt    2 root  wheel    64 Dec 21 23:29 cores

Set size of core file

PROMPT> ulimit -c unlimited

Compile and sign the program

PROMPT> cargo build --release -p my-crashing-program
PROMPT> /usr/libexec/PlistBuddy -c "Add :com.apple.security.get-task-allow bool true" tmp.entitlements
PROMPT> codesign -s - -f --entitlements tmp.entitlements my-crashing-program

Run the program

PROMPT> my-crashing-program
thread 'main' panicked at 'boom', my-crashing-program/src/main.rs:74:5
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
dumping core for pid 80995
zsh: quit       my-crashing-program

Now there is a `core` file

PROMPT> ls /cores
core.80995

Also Apple's `Console` app has a list with `Crash Reports`.

Problem

On Mac OS X, if I send SIGQUIT to my C program, it terminates, but there is no core dump file. Do you have to manually enable core dumps on Mac OS X (how?), or are they written to somewhere else instead of the working directory?

Original source

Related problems