Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Remove
void lazarus()
from Lisp kernel
Given its name, I can infer that `lazarus` is mean to resurrect a dying thread if it still has a TCR: if TCR exists, then it calls start_lisp; if it doesn't, then it does nothing. start_lisp, in turn, is an assembly function that has the following comment inside it: This is called from C code when a thread (including the initial thread) starts execution. (Historically, it also provided a primitive way of "resettting" a thread in the event of catastrophic failure, but this hasn't worked in a long time.) I assume that lazarus() is the function mentioned here. It does seem to try and "reset" a thread in the event of it doing an exit call (lazarus is bound to atexit() calls in the main function). If that is true, therefore I infer that a possible fix be to remove this function from the CCL codebase, along with its atexit() bindings. This should solve GitHub issue Clozure#24 where a call that then calls lazarus() sometimes deadlocks when (ccl:quit) is called.
- Loading branch information