Andy Wingo <[EMAIL PROTECTED]> writes: > Hi, > > On Tue, 2005-12-13 at 23:58 +0000, Neil Jerram wrote: >> read_without_guile_data *data = (read_without_guile_data *)data; > > Didn't fix the issue for me, same symptoms. Can't run pre-inst-guile; it > gives me: > > (pygst gst) [EMAIL PROTECTED]:~/src/guile/guile-core$ ./pre-inst-guile > ERROR: In procedure memoization: > ERROR: Bad binding #<freed cell 0x2aaaabc6de30; GC missed a reference> > in expression [...]
Well this obviously looks like a GC problem, and it's always tricky to know where to start when debugging such problems. It might help to know what the freed cell was before the GC set its car to scm_tc_free_cell. Do you get the same freed cell address repeatedly? If so, you can add code to print out the cell just before the places that set its car (i.e. gc-card.c lines 258 and 292), something like: if (SCM_UNPACK (scmptr) == 0x2aaaabc6de30) { scm_write (scmptr, SCM_UNDEFINED); scm_newline (SCM_UNDEFINED); } Otherwise, it just occurred to me to wonder more about why we need the fix from Ludovic that I applied a few days ago. Why is there a window between the creation of a GC card and its being initialized by scm_i_init_card_freelist? Given that there is a window, can a cell be allocated from the card before scm_i_init_card_freelist is called? If it can, that would explain this bug, before scm_i_init_card_freelist unconditionally sets all cells' car to scm_tc_free_cell. That's as far as I can get for tonight. Neil _______________________________________________ Guile-devel mailing list Guile-devel@gnu.org http://lists.gnu.org/mailman/listinfo/guile-devel