Thank you for sharing this writeup!<p>Regarding the Emacs example: You can make Emacs crash entirely by triggering internal recursion in the garbage collector that exceeds the C stack limit, for example with:<p><pre><code> $ emacs -Q --eval "(let (v) (while t (setq v (cons v v))))"
</code></pre>
yielding:<p><pre><code> Fatal error 11: Segmentation faultSegmentation fault: 11.
</code></pre>
and the backtrace:<p><pre><code> Program received signal EXC_BAD_ACCESS, Could not access memory.
Reason: KERN_INVALID_ADDRESS at address: 0xbf7ffffc
0x0013bc1a in mark_object (arg=40166541) at alloc.c:5372
(gdb) bt
#0 0x0013bc1a in mark_object (arg=40166541) at alloc.c:5372
#1 0x0013bdf8 in mark_object (arg=40166549) at alloc.c:5655
#2 0x0013bdf8 in mark_object (arg=40166557) at alloc.c:5655
#3 0x0013bdf8 in mark_object (arg=40166565) at alloc.c:5655
#4 0x0013bdf8 in mark_object (arg=40166573) at alloc.c:5655
#5 0x0013bdf8 in mark_object (arg=40166581) at alloc.c:5655
#6 0x0013bdf8 in mark_object (arg=40166589) at alloc.c:5655
...</code></pre>