Trac 45: Can't exit debugger on OSX
From Trac 45.
When a real sigbus happens on Mac OS X, cmucl can't exit to top-level or exit the debugger. Here is an example of how to trigger this:
* (sys:sap-ref-8 (sys:int-sap 0) 256)
sigbus_handler: Real protection violation: 0x100
Error in function UNIX::SIGBUS-HANDLER: Bus Error at #x105DC74F.
[Condition of type SIMPLE-ERROR]
Restarts:
0: [ABORT] Return to Top-Level.
Debug (type H for help)
(UNIX::SIGBUS-HANDLER #<unused-arg> #<unused-arg> #.(SYSTEM:INT-SAP #x47FFFFE0))
Source:
; File: target:code/signal.lisp
(DEFINE-SIGNAL-HANDLER SIGBUS-HANDLER "Bus Error")
0] 0
Error in function UNIX::SIGSEGV-HANDLER: Segmentation Violation at #x4803B8E9.
[Condition of type SIMPLE-ERROR]
Restarts:
0: [ABORT] Return to Top-Level.
Debug (type H for help)
(UNIX::SIGBUS-HANDLER #<unused-arg> #<unused-arg> #.(SYSTEM:INT-SAP #x47FFFFE0))
Source: (DEFINE-SIGNAL-HANDLER SIGBUS-HANDLER "Bus Error")
0] 0
sigbus_handler: Real protection violation: 0x0
Maximum number (4096) of interrupts exceeded. Exiting.
On linux or solaris, we immediately return to top-level as expected.
Note that in other situations, the debugger works fine.