Damit man das Phänomen untersuchen kann, kann das Betriebssystem einen Speicherabzug machen, traditionell "core" genannt, von Kernspeicher, was das alte Wort für den RAM-Hauptspeicher ist.
/arch/i386/mm/fault.c:do_page_fault hier wird er erkannt und mit force_sig_info(SIGSEGV,&info,tsk); das Signal ausgelöst.
Das ausschreiben findet in: /usr/src/linux-2.4.8/fs/binfmt_elf.c;int elf_core_dump(long signr, struct pt_regs * regs, struct file * file) statt
linux/binfmts.h:struct linux_binfmt::core_dump(long signr, struct pt_regs * regs, struct file * file);
fs/exec.c:do_coredump(...) initiiert das coredump
arch/i386/kernel/signal.c: do_signal veranlasst das do_coredump
Folgender patch liefert ausführlichere coredump-namen der Form
core.pid.progname.
Damit können nun Prozesse mit gleichem Namen einen core
schmeissen.
Es wird nun im syslog gemeldet, daß ein core geschmiessen wurde, bzw. falls ein core kommen sollte und dies Gründe dagegen gibt, werden die auch auf dem Syslog gemeldet.
Hier also der coredump.patch.
Man sollte so ein Feature/Merkmal zur Laufzeit ein- und abschalten können...
Der GNU Debugger hat ein Befehl gcore um ein Corefile von einem laufenden Prozess zu erzeugen.