]> granicus.if.org Git - gc/commitdiff
Fix assertion violation in mark_local checking GC_mark_stack_top
authorIvan Maidanski <ivmai@mail.ru>
Thu, 17 Nov 2016 07:23:53 +0000 (10:23 +0300)
committerIvan Maidanski <ivmai@mail.ru>
Sun, 27 Nov 2016 06:34:41 +0000 (09:34 +0300)
* mark.c (GC_mark_local): Replace AO_load with AO_load_acquire in
the assertion comparing global_first_nonempty to GC_mark_stack_top.

mark.c

diff --git a/mark.c b/mark.c
index 06a0b4ba915add3a893b7c6c25bcf09e062d1381..81360307707fc0dad9cdead12da3d6df882a1da2 100644 (file)
--- a/mark.c
+++ b/mark.c
@@ -1074,7 +1074,7 @@ STATIC void GC_mark_local(mse *local_mark_stack, int id)
                         + sizeof(mse));
         GC_ASSERT((word)global_first_nonempty >= (word)GC_mark_stack &&
                   (word)global_first_nonempty <=
-                        (word)AO_load((volatile AO_t *)&GC_mark_stack_top)
+                    (word)AO_load_acquire((volatile AO_t *)&GC_mark_stack_top)
                         + sizeof(mse));
         if ((word)my_first_nonempty < (word)global_first_nonempty) {
             my_first_nonempty = global_first_nonempty;