(Action) just found a nasty lisp bug.
Err, in my Lisp, not emacs. Imagine you have a global variable 'foo' that has a cons-cell value. In C, you grab a reference to it and start working on the object described by its car.
You think, "hrm, that's okay. The reference to the cons cell will keep the object alive". Then another thread comes along and calls rplaca on that cons cell.
If that cons' car was the last reference to that object, it's deallocated and you lose, badly.