pthread_cond_broadcast is not asynch signal safe
  AKA /less/ GC deadlocks on Darwin.
  To be specific, it can cause our GC to deadlock on Darwin, with all lisp
  threads spinning on the same global spinlock in the bowels of the
  pthread_cond_wait implementation. That was fun to figure out.
  The test (:interrupt-thread :interrupt-consing-child) is a good one
  for catching this: try to run it repeatedly under an earlier SBCL
  under Darwin, and sooner or later it will hang.
  ...with this commit, we're still using pthread_cond_broadcast, but
  blocking signals around the relevant bits, which --experimentally--
  makes the aforementioned test pass "somewhat more consistently".
  It can still hang, but those hangs seem to be related to deferrable
  signals being indefinitely blocked in one of the threads -- no idea
  as of yet why.
  Summa Summarum: this is a bit of a sorry bandaid, waiting for
  a better solution. (Probably using realtime semaphores, which
  /should/ be signal-handler safe.)