From 4781c6dab458d547003d2acdd84509933a131004 Mon Sep 17 00:00:00 2001 From: Ivan Maidanski Date: Wed, 9 Aug 2017 11:35:25 +0300 Subject: [PATCH] Fix array_mark_proc to request global mark stack growth on overflow (fix commit 3f06655) * typd_mlc.c [PARALLEL_MARK] (GC_array_mark_proc): Set GC_mark_stack_too_small to true if GC_push_complex_descriptor() returned null and mark_stack_limit belongs to the global mark stack (even if GC_parallel is true). --- typd_mlc.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/typd_mlc.c b/typd_mlc.c index 2e1da820..3cf56fa5 100644 --- a/typd_mlc.c +++ b/typd_mlc.c @@ -521,8 +521,8 @@ STATIC mse * GC_array_mark_proc(word * addr, mse * mark_stack_ptr, /* This cannot cause a mark stack overflow, since it replaces */ /* the original array entry. */ # ifdef PARALLEL_MARK - /* We are using a local_mark_stack in parallel mode. */ - if (!GC_parallel) + /* We might be using a local_mark_stack in parallel mode. */ + if (GC_mark_stack + GC_mark_stack_size == mark_stack_limit) # endif { GC_mark_stack_too_small = TRUE; -- 2.40.0