Ok, another patch is ready. Note that this is a cumulative patch and
the other patches.
Fixed in this patch:
* low level details of how to initialize mach exception handling with
... remove darwin_init
... rework the function that creates the mach exception handling
thread and call
it from the initial_thread creation stuff and from the posix
... create a new port set for all of the lisp threads to join to
talk to the mach
exception handling thread
... use the address of the thread as the "name" of the exception
properly get that port established with the right privileges
... remove the thread's port from the port set and deallocate and
the port on thread termination, esp. since the thread addresses
* fix fork to work with the new mach exception handling scheme
* removed some stuff that we don't need anymore
* exhaust.impure.lisp doesn't pass as we run out of stack space and
recognize this and call the lisp handler, we just die.
* threads.impure.lisp fails, although we do at least some simple thread
operations, so threads seem to be working about as well as before.
* check_blockables_blocked_or_lose is commented out. We're not
appropriately in the signal emulation stuff.
So, it's getting better. All (expected) threads except
exhaust.impure.lisp, thread.impure.lisp and init.test.sh.
Enjoy. As always, feedback (and patches to fix the remaining
problems!) appreciated. And,
remember, to turn it on you must add :mach-exception-handler to