]> granicus.if.org Git - gc/commitdiff
Fix lock assertion violation in get_index if GC_ALWAYS_MULTITHREADED
authorIvan Maidanski <ivmai@mail.ru>
Tue, 23 Oct 2018 23:08:14 +0000 (02:08 +0300)
committerIvan Maidanski <ivmai@mail.ru>
Tue, 23 Oct 2018 23:08:14 +0000 (02:08 +0300)
(fix of commit d5c65315b)

* misc.c [GC_ASSERTIONS && GC_ALWAYS_MULTITHREADED] (GC_init): Move up
LOCK() call to precede GC_expand_hp_inner() call.

misc.c

diff --git a/misc.c b/misc.c
index fe4605be641d471dabe4318f44c73f8b4a800b93..ac93b090819ff3c2074d8db1fc59568a2da02c06 100644 (file)
--- a/misc.c
+++ b/misc.c
@@ -1301,6 +1301,9 @@ GC_API void GC_CALL GC_init(void)
           GC_set_max_heap_size(max_heap_sz);
         }
     }
+#   if defined(GC_ASSERTIONS) && defined(GC_ALWAYS_MULTITHREADED)
+        LOCK(); /* just to set GC_lock_holder */
+#   endif
     if (!GC_expand_hp_inner(divHBLKSZ(initial_heap_sz))) {
         GC_err_printf("Can't start up: not enough memory\n");
         EXIT();
@@ -1328,9 +1331,6 @@ GC_API void GC_CALL GC_init(void)
       GC_pcr_install();
 #   endif
     GC_is_initialized = TRUE;
-#   if defined(GC_ASSERTIONS) && defined(GC_ALWAYS_MULTITHREADED)
-        LOCK(); /* just to set GC_lock_holder */
-#   endif
 #   if defined(GC_PTHREADS) || defined(GC_WIN32_THREADS)
         GC_thr_init();
 #       ifdef PARALLEL_MARK