> > > Btw, this is only a weak guess about what's going on, because the > > > corruption I'm seeing isn't even in the linked list nodes. It only > > > happens with GC_DEBUG, but it's not an infant mortality bug. > > > > GC_DEBUG adds extra calls to do_dod_run (infant mortality), and > > do_collect. You're likely running into problems where you are referencing > > memory which is getting moved out from under you. Instead of blindly > > referencing the data in the buffer itself, you should be referencing the > > buffer header. > > Doesn't look like it. I've instrumented every place where memory gets > moved around, and it appears that even though it is correctly marking > my Buffer as live, it's still copying something else onto its memory. > Which is in itself not a problem, because that's what I thought should > happen -- but it should be copying my stuff to somewhere else first! I > feel discriminated against. My memory isn't as important as someone > else's.
Doh! Never mind. The problem was that my buffer was coming from new_tracked_header, and those aren't scanned. Basically, I didn't finish implementing it. (And I probably won't until Peter Gibbs's stuff lands.) stoopid sfink.