memory fault error reporting

Bug #309068 reported by Nikodemus Siivola on 2008-12-17
Affects Status Importance Assigned to Milestone

Bug Description

On those architectures where :C-STACK-IS-CONTROL-STACK is in
*FEATURES*, we handle SIG_MEMORY_FAULT (SEGV or BUS) on an altstack,
so we cannot handle the signal directly (as in interrupt_handle_now())
in the case when the signal comes from some external agent (the user
using kill(1), or a fault in some foreign code, for instance).

Tthis is fixed by calling arrange_return_to_lisp_function() to a new error-signalling
function, but as a result the error reporting is brittle: the fault address is passed to
lisp code in a global variable, which is decidedly not threadsafe.

lt occurred. We should arrange such that arguments can be passed to the function
called from arrange_return_to_lisp_function(), but this looked hard to do in general
without suffering from memory leaks.

There are probably other use-cases of passing arguments via a_r_t_l_f as well.

description: updated
description: updated
Changed in sbcl:
importance: Undecided → Low
status: New → Confirmed

Fixed in 60b6cdb8074978cabecd2972105ebc851da41bf5.

Changed in sbcl:
status: Confirmed → Fix Committed
Changed in sbcl:
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers