diff --git a/racket/src/racket/gc2/newgc.c b/racket/src/racket/gc2/newgc.c index 597c0367fd..fe3b2392bb 100644 --- a/racket/src/racket/gc2/newgc.c +++ b/racket/src/racket/gc2/newgc.c @@ -4820,10 +4820,23 @@ static void garbage_collect(NewGC *gc, int force_full, int switching_master, Log is_master = (gc == MASTERGC); #endif gc->dumping_avoid_collection++; + + /* Inform might allocate, which might need park: */ + gc->park_save[0] = gc->park[0]; + gc->park_save[1] = gc->park[1]; + gc->park[0] = NULL; + gc->park[1] = NULL; + gc->GC_collect_inform_callback(is_master, gc->gc_full, old_mem_use + old_gen0, gc->memory_in_use, old_mem_allocated, mmu_memory_allocated(gc->mmu), gc->child_gc_total); + + gc->park[0] = gc->park_save[0]; + gc->park[1] = gc->park_save[1]; + gc->park_save[0] = NULL; + gc->park_save[1] = NULL; + --gc->dumping_avoid_collection; } #ifdef MZ_USE_PLACES