I'm getting further through the tests. This patch resolves a bug with nanosleep on MacOSX. The bug manifests itself if you call sleep a bunch of times. What happens is that nanosleep eventually returns a remaining time measured at over 4 Billion seconds. Ugh. I finally looked to see what Clozure CL was doing when it slept and they were apparently seeing the same behavior I was.
With this patch applied and the former one (thread.c.patch) I'm getting much further along in the tests. The threads.impure.lisp test has been the stumbling block so far and remains so. I'll send another patch out once I get past this next issue.
Just to make things easy I'm going to include both fixes I've applied on my local system.
thread.c.patch - This addresses the issue with pthread_join() being called in a child lisp process on a non-existent thread.
unix.lisp.patch - This fixes the issue above with nanosleep on a Snow Leopard (Clozure CL indicates Leopard as well) 64-bit Mac.
Fare: I read through your notes on forking. What a mess - I don't have have much more thoughts for the moment. Right now I'm just concentrating on getting SBCL on a Mac to pass all the tests!