On Feb 23 13:36:56, Anthony Howe wrote: > I have a daemon process I've written and trying to debug, however, > whenever it crashes, I get no core file. > > 1. The daemon does a setrlimit of RLIMIT_CORE to RLIM_INFINITY (same as > if I had done "ulimit -H -c unlimited" in the shell before starting the > process). > > 2. The daemon sets its working directory to /var/tmp, which is writeable > by every one, yet no core file appears. Likewise /var/crash has no core > file. > > 3. The program does not use file system setuid bits, BUT does use the > setuid() et al. system calls to drop privileges from root to some other > user (which can write into /var/tmp). > > 4. A find / -name '*.core' finds nothing anywhere. > > 5. I've even tried sysctl kern.nosuidcoredump=0 and > kern.nosuidcoredump=2 thinking that the setuid family of system > functions might be resetting a flag when I drop privileges. > > 6. Even forcing a SIGABRT, which should produce a core, does not create > one. > > > What am I missing in order to get a daemon process on OpenBSD to dump > core when it crashes?
Depends on how exactly it "crashes", man sigaction(2). Are you possibly catching the signals yourself? The following coredumps as a charm: #include <stdlib.h> int main() { abort(); /* NOTREACHED */ return 0; }