Branch: Tag:

2021-08-30

2021-08-30 14:41:45 by Henrik Grubbström (Grubba) <grubba@grubba.org>

GC [Trampolines]: Disable gc_recurse_frame() for now.

gc_recurse_frame() is seriously broken for the case where
the same frame is referred to from several objects. This
leads to the references from the frame being counted once
for every reference to the frame.

87:      static void gc_recurse_frame(struct pike_frame *f)   { +  /* BROKEN! +  * +  * In memory-count mode references from the frame are +  * counted once per refrence to the frame. This leads +  * to over counting and is due to there not being a +  * separate struct mc_marker for the struct pike_frame. +  */ + #if 0    if (!f) return;    if(f->current_object)    gc_recurse_object(f->current_object);
95:    if(f->flags & PIKE_FRAME_MALLOCED_LOCALS)    gc_recurse_svalues(f->locals - 1, 1);    gc_recurse_frame(f->scope); + #endif   }      DECLARATIONS