]> 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>
Thu, 17 Nov 2016 07:23:53 +0000 (10:23 +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 f8928b3e116802802b43b30242220aa7e1d76e93..b83ad9130bc09fb4ca80e8d80a19db0efecb1b42 100644 (file)
--- a/mark.c
+++ b/mark.c
@@ -1075,7 +1075,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;