#489 segfault when signaling unbound-variable errors from fsubr

segfault
closed-fixed
Sam Steingold
clisp (525)
5
2008-07-17
2008-07-17
Sam Steingold
No

(HANDLER-BIND ((UNBOUND-VARIABLE (LAMBDA (C) (PRINC-ERROR C)
(STORE-VALUE 10)))) (LIST (LET (X) (MAKUNBOUND 'X) X) X))
[SIMPLE-UNBOUND-VARIABLE]:
*** - handle_fault error2 ! address = 0x29001ad0 not in
[0x1a9a0000,0x1ab623e4) !
SIGSEGV cannot be cured. Fault address = 0x29001ad0.
Permanently allocated: 86720 bytes.
Currently in use: 4446836 bytes.
Free space: 217119 bytes.
make[1]: *** [tests] Segmentation fault

<http://article.gmane.org/gmane.lisp.clisp.devel/18488>
OSX PPC (Tiger 10.4.11)

<http://article.gmane.org/gmane.lisp.clisp.general/12311>
Intel-based iMac with Tiger 10.4.11

Discussion

  • Sam Steingold
    Sam Steingold
    2008-07-17

    Logged In: YES
    user_id=5735
    Originator: YES

    the reason it worked for me but not for you is that fsubr and subr structs start the same:

    typedef struct {
    XRECORD_HEADER
    gcv_object_t name _attribute_aligned_object_; /* name */

    the the only difference is that subr ends with

    #if defined(HEAPCODES) && (alignment_long < 4) && defined(GNU)
    /* Force all Subrs to be allocated with a 4-byte alignment. GC needs this. */
    __attribute__ ((aligned (4)))
    #endif

    you can do "make lispbibl.h" (if you are using gcc) and see the values of HEAPCODES, alignment_long, and the actual definition of subr_t and fsubr_t.
    I bet you have the __attribute__ ((aligned (4))).

    <http://article.gmane.org/gmane.lisp.clisp.devel/18613>

     
  • Sam Steingold
    Sam Steingold
    2008-07-17

    • status: open --> closed-fixed
     
  • Sam Steingold
    Sam Steingold
    2008-07-17

    Logged In: YES
    user_id=5735
    Originator: YES

    thank you for your bug report.
    the bug has been fixed in the CVS tree.
    you can either wait for the next release (recommended)
    or check out the current CVS tree (see http://clisp.cons.org\)
    and build CLISP from the sources (be advised that between
    releases the CVS tree is very unstable and may not even build
    on your platform).