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: v7.4.6~15 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=84b845c7ba95c1f8abeb907c20527bed1da7b9bc;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 477928e2..ef78f281 100644 --- a/mark.c +++ b/mark.c @@ -565,6 +565,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;