Re: lisp dies with "Mach error"

Gary Byers <[email protected]> Wed, 27 Apr 2005 18:44:06 -0600 (MDT)
Newsgroups gmane.lisp.openmcl.bugs
Message-ID <[email protected]>

On Wed, 27 Apr 2005, Alan Ruttenberg wrote:

> Haven't seen this one before...
> No backtrace. No kernel debugger.
> While running slime. I think I was inspecting something.
> If I can make this repeat I will send further information.
> Running on  PBG4, 1.2GHz, os 10.3.8, 2G Ram.
>
> --
>
> Fatal error: Mach error
> Mach error while naming exception_port : 13
>
> Process inferior-lisp exited abnormally with code 255
>

I've seen that (in situations where lots of threads had been created
and died); I had -thought- that there was code in 0.14.3 that kept it
from happening.  Is this 0.14.3, or an earlier version ?

A Mach port "name" is an arbitrary 32-bit integer; the lisp kernel
tries to arrange that a given thread's exception port name is the
address of the thread's "thread context record" (TCR).  When a thread
dies (and its TCR is freed), the port name is supposed to be
deallocated/ destroyed, and made available for subsequent re-use.
The error (13 = KERN_NAME_EXISTS) indicates that Mach still believes
that a port whose "name" matches a TCR's address is active.

You'll -probably- find that this is very hard to reproduce; if it
happened under 0.14.3, I'll see if I can come up with a different
approach.

(Mach sucks, but no one knows how.)