[Openmcl-devel] Clozure CL 1.3-RC1 available

Gary Byers gb at clozure.com
Mon Mar 9 04:44:33 UTC 2009


I got a 32-bit ("Core Duo") iMac that I'd lent to a friend back a
few days ago.  It had Leopard installed on it, I didn't have 
Tiger install disks, and ... well, I was able to set the clock back
a year or so and install a copy of 10.4.7 server that's available on
ADC.

I couldn't reproduce the problems that you saw - things like (QUIT)
and ^C behaved as they're supposed to.  That suggests that one of more
of the following is true:

- some change was introduced between 10.4.7 and 10.4.11 that causes
   this stuff to behave differently
- OSX Client and Server versions differ in this regard
- there's some third-party or other software that affects how Mach-level
   exceptions are reported to applications.

I don't have a good guess as to what the "third party or other software"
would be; whatever it is, it'd have to hook itself into some fairly
low-levels of the OS.  We've had reports of some versions of VMWare
running on some kinds of hosts messing up exception-handling code
in at least the guest OS, which sort of suggests that virtualization
software -might- muck with this stuff in a way that'd affect the
host.

I don't know which of the possibilities mentioned above is most
likely (or if there's another explanation that I'm not thinking of.)
I might be able to upgrade the Server installation to 10.4.11, which
would tell us whether the first possibility explains things.

If anyone else has access to a first-generation Intel Mac (a 32-bit
machine, something sold in the first several months of 2006) running
Tiger, it'd be interesting to know whether the lisp behaves correctly
(doesn't go all non-linear in response to ^C or (QUIT)) on that
platform.

On Mon, 16 Feb 2009, John Stoneham wrote:

>
>> Great, thanks.  There are a couple of things that I'm curious about.
>>
>> 1) In the function 'illegal() in the mach32.c function that I sent out
>> the other day, there's a commented-out
>>
>> /*  __asm__ volatile("int $0xd5");  */
>>
>> If you remove the /* */ comments and recompile, do you get:
>>
>> Mach exception: 1 (EXC_BAD_ACCESS) with 2 codes: 0xd 0x6aa
>>
>> (I'd think so.)
>>
>
> Yes, that's exactly what I get.
>
>> 2) Does changing the following case clause in
>> lisp-kernel/x86-exceptions.c (and rebuilding the kernel) fix things
>> for you, without obviously breaking anything else ?  The clause in
>> quesion is around line 3190, and the proposed change is to
>> unconditionally set 'signum' to SIGILL, e.g., to change:
>>
>>        case EXC_BAD_INSTRUCTION:
>>          if (code == EXC_I386_GPFLT) {
>>            signum = SIGSEGV;
>>          } else {
>>            signum = SIGILL;
>>          }
>>          break;
>>
>>
>> to:
>>
>>        case EXC_BAD_INSTRUCTION:
>>          signum = SIGILL;
>>          break;
>
> Nope, didn't work, but Tiger and Leopard were different this time. I changed the code above and ran "make" in the lisp-kernel/darwinx8632 directory. It compiled fine without errors on both. On Leopard, when I then ran ccl with the new kernel it behaved the same as it did before: QUIT still threw an error, and rebuilding ccl borked at loading the newly compiled image. The backtraces were the same as they were before, as near as I can tell. The only difference was that ^D didn't cause it to freeze, it just went to a new user prompt. But here's the thing. When I tried it on Tiger, ccl wouldn't even get to the repl. This is what I get (with B, T, and L info):
>
> $ ccl
> Unhandled exception 4 at 0x88adc77, context->regs at #xbffff5cc
> ? for help
> [528] Clozure CL kernel debugger: B
> current thread: tcr = 0x300480, native thread ID = 0x113, interrupts disabled
> [528] Clozure CL kernel debugger: T
> Current Thread Context Record (tcr) = 0x300480
> Control (C) stack area:  low = 0xbfe9c000, high = 0xbffff930
> Value (lisp) stack area: low = 0x405000, high = 0x0
> Exception stack pointer = 0x547fec
> [528] Clozure CL kernel debugger: L
> %ebx (arg_z) = #<Anonymous Function #x089B1C3E>
> %esi (arg_y) = #<Anonymous Function #x089B0EBE>
> ------
> %edi (fn) = #<Function (:INTERNAL SAVE-IMAGE) #x088ADC3E>
> ------
> Unhandled exception 10 at 0x2cdc7, context->regs at #xbfffeebc
> Exception occurred while executing foreign code
> at sprint_vector + 12
> ? for help
> [528] Clozure CL kernel debugger:
>
>
>
>
>
>



More information about the Openmcl-devel mailing list