In macOS, I find that SIGABRT won't generate core dumps in some cases.
For example, I run a sleep in one terminal:
lianxin.wlx@mbp [01:08:21] [~/test]
-> % sleep 1000
And send a SIGABRT to it in another terminal:
lianxin.wlx@mbp [01:08:59] [~]
-> % ps -ef | grep sleep
502 47679 20388 0 1:08AM ttys001 0:00.01 sleep 1000
lianxin.wlx@mbp [01:09:03] [~]
-> % kill -6 47679
Then the sleep process is aborted, but no core dump is generated.
lianxin.wlx@mbp [01:08:21] [~/test]
-> % sleep 1000
[1] 47679 abort sleep 1000
lianxin.wlx@mbp [01:10:35] [~/test]
-> % ls /cores
lianxin.wlx@mbp [01:10:37] [~/test]
-> %
So why? I've tested the same operations in Linux, it did generate a core dump.
I'm sure I've opened the core dump right(ulimit -c unlimited
, and /cores
's privilege is 777). I wrote a program that will crash with SIGSEGV, and it did generate a core dump in /cores.