[cffi-devel] Crashes on X86-64 CLISP

James Bielman jamesjb at jamesjb.com
Fri Feb 3 15:07:29 UTC 2006


"Hoehle, Joerg-Cyril" <Joerg-Cyril.Hoehle at t-systems.com> writes:

> Uhoh, then it's likely not the FFI.  Please investigate.

It looks like the problem is with FFI:UNSIGNED-FOREIGN-ADDRESS and
FFI:FOREIGN-ADDRESS-UNSIGNED expecting and returning 32-bit integers:

[ ...with *print-base* set to 16... ]
CFFI[47]> (ffi:with-foreign-object (x 'ffi:int)
            (print (ffi:foreign-address x))
            (print (ffi:foreign-address-unsigned (ffi:foreign-address x)))
            nil)

#<FOREIGN-ADDRESS #x00007FFFFFEF3750> 
FFEF3750 
NIL

CFFI[49]> (ffi:unsigned-foreign-address #x100000000)

*** - not a 32-bit integer: 100000000
The following restarts are available:
ABORT          :R1      ABORT
Break 1 CFFI[50]> 

This breaks CFFI-SYS:INC-POINTER which ends up returning bogus
pointers because the high 32 bits have been truncated.

James



More information about the cffi-devel mailing list