From: Ivan Maidanski Date: Tue, 19 Sep 2017 07:51:24 +0000 (+0300) Subject: Fix infinite mark_some calls after memory mapping disappeared (Glibc) X-Git-Tag: v8.0.0~579 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=6ab6b73bcf35374f3e30e51cc947d6035117eb94;p=gc Fix infinite mark_some calls after memory mapping disappeared (Glibc) Issue #179 (bdwgc). * mark.c [WRAP_MARK_SOME && REGISTER_LIBRARIES_EARLY] (GC_mark_some): Call GC_cond_register_dynamic_libraries (with the world running) before GC_invalidate_mark_state(). --- diff --git a/mark.c b/mark.c index c9adca37..d51abeb3 100644 --- a/mark.c +++ b/mark.c @@ -594,6 +594,11 @@ handle_ex: } /* We have bad roots on the stack. Discard mark stack. */ /* Rescan from marked objects. Redetermine roots. */ +# ifdef REGISTER_LIBRARIES_EARLY + START_WORLD(); + GC_cond_register_dynamic_libraries(); + STOP_WORLD(); +# endif GC_invalidate_mark_state(); scan_ptr = 0;