Compare the definitions of the structures WORKING and BROKEN: (use-package :cffi) (defcstruct foo (x :int)) (defcstruct working (y foo)) (defcstruct (broken :conc-name broken-) (y foo)) Compiling the WORKING definition works perfectly, while compiling BROKEN produces the following error in SBCL: ; caught ERROR: ; don't know how to dump #<CFFI::AGGREGATE-STRUCT-SLOT {10041256D1}> (default MAKE-LOAD-FORM method called). This appears to stem from the application of the following compiler macro (and ultimately the result of foreign-struct-slot-set-form) to the generated accessors: (define-compiler-macro foreign-slot-set (&whole form value ptr type slot-name) "Optimizer when TYPE and SLOT-NAME are constant." (if (and (constantp type) (constantp slot-name)) (foreign-struct-slot-set-form value ptr (get-slot-info (eval type) (eval slot-name))) form)) This occurs for arrays as well as structures for the slot type, but not simpler types (:int, etc).