Hi, attached is a patch that seems to fix the problem with gcc4 and 64bit architectures.
The scm_mark_locations function in gc-mark.c calls scm_gc_mark on everything located in one of the allocated segments. Shouldn't there be a check if the address is at least scm_t_cell aligned? Is it correct or is it just plain luck it works with the patch? Thanks, -- Miroslav Lichvar
--- libguile/gc-mark.c.orig 2006-02-12 14:29:12.000000000 +0100 +++ libguile/gc-mark.c 2006-05-05 14:41:07.000000000 +0200 @@ -433,6 +433,8 @@ for (m = 0; m < n; ++m) { SCM obj = * (SCM *) &x[m]; + if ((scm_t_bits)obj & (sizeof (scm_t_cell) - 1)) + continue; long int segment = scm_i_find_heap_segment_containing_object (obj); if (segment >= 0) scm_gc_mark (obj);
_______________________________________________ Guile-devel mailing list Guile-devel@gnu.org http://lists.gnu.org/mailman/listinfo/guile-devel