[m-dev.] bug in solutions?

Fergus Henderson fjh at cs.mu.oz.au
Mon Apr 21 15:37:40 AEST 1997


Peter Schachte, you wrote:
> 
> In looking at the code for solutions in non-GC grades, I noticed this
> code (comments trimmed):
> 
> 	Word *temp_hp = hp;
> 	hp = (Word) solutions_heap_pointer;
> 	save_transient_registers();
> 	r3 = deep_copy(r1, (Word *) type_info_fv, (Word *) saved_hp_fv, 
> 		heap_zone->top);
> 	restore_transient_registers();
> 	list_fv = list_cons(r3, list_fv);
> 	solutions_heap_pointer = (Word *) hp;
> 	hp = temp_hp;
> 
> 
> If the solutions heap should overflow during the deep_copy in a grade
> with a non-conservative garbage collector, wouldn't we be in
> deep_dodo?  hp points one place, and heap_zone's fields point
> somewhere else entirely.

I discussed this with Tyson.  Currently the non-conservative garbage
collector hasn't been implemented yet, and so we're not entirely
sure what invariants it will rely on.  For the moment we'll leave
the code as is; we may need to revisit this issue later on, when
implementing the non-conservative collector.

-- 
Fergus Henderson <fjh at cs.mu.oz.au>   |  "I have always known that the pursuit
WWW: <http://www.cs.mu.oz.au/~fjh>   |  of excellence is a lethal habit"
PGP: finger fjh at 128.250.37.3         |     -- the last words of T. S. Garp.



More information about the developers mailing list