Hi Kevin, Kevin Ryde writes: > "Marco Maggi" writes: >> >> guile> (equal? (values 1 2) (values 1 2)) >> ERROR: Stack overflow > > Thanks, looks like a bug introduced by recursing into structs in > equal?. I guess scm_i_struct_equalp should check and ignore a field > type "s" ... Indeed, good guess! I propose the following simple fix. Ok to apply? Actually, `scm_i_struct_equalp ()' should also compare the "tail elements" (when there are tail elements), but their semantics are a little fuzzy to me. In particular, I don't understand why the size of the tail array can be specified in both `make-vtable-vtable' and `make-struct': What does that mean? Which one should really be taken into account? It seems that the code is a bit unclear on this too: guile> (define v (make-vtable-vtable "pr" 0)) guile> (define s (make-struct v 123)) guile> (struct-ref s 10) Segmentation fault (Looks like the API is so complex that few people actually bothered to use it to its full extents. ;-)) Thanks, Ludovic.