summaryrefslogtreecommitdiff
path: root/win32_threads.c
diff options
context:
space:
mode:
Diffstat (limited to 'win32_threads.c')
-rw-r--r--win32_threads.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/win32_threads.c b/win32_threads.c
index 7fcee339..196bc7bf 100644
--- a/win32_threads.c
+++ b/win32_threads.c
@@ -2008,10 +2008,12 @@ GC_INNER void GC_get_next_stack(char *start, char *limit,
# endif
GC_ASSERT(I_HOLD_LOCK());
+ ASSERT_CANCEL_DISABLED();
if (available_markers_m1 <= 0) return;
/* Skip if parallel markers disabled or already started. */
# ifdef CAN_HANDLE_FORK
if (GC_parallel) return;
+ GC_wait_for_gc_completion(TRUE);
/* Reset mark_cv state after forking (as in pthread_support.c). */
{
@@ -2181,6 +2183,7 @@ GC_INNER void GC_get_next_stack(char *start, char *limit,
int i;
GC_ASSERT(I_HOLD_LOCK());
+ ASSERT_CANCEL_DISABLED();
if (available_markers_m1 <= 0) return;
GC_ASSERT(GC_fl_builder_count == 0);