From 6ab6b73bcf35374f3e30e51cc947d6035117eb94 Mon Sep 17 00:00:00 2001 From: Ivan Maidanski Date: Tue, 19 Sep 2017 10:51:24 +0300 Subject: [PATCH] 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(). --- mark.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/mark.c b/mark.c index c9adca3..d51abeb 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; -- 2.7.4