]> granicus.if.org Git - gc/commitdiff
Fix assertion in GC_mark_from for non-heap regions
authorGabor Drescher <gabor.drescher@cs.fau.de>
Tue, 5 Jul 2016 07:51:50 +0000 (09:51 +0200)
committerIvan Maidanski <ivmai@mail.ru>
Sat, 30 Jul 2016 08:13:10 +0000 (11:13 +0300)
* mark.c (GC_mark_from): Relax assertion condition for descr and
GC_least/greatest_plausible_heap_addr values.

mark.c

diff --git a/mark.c b/mark.c
index 9491932700921a8afe0a343eca9d0c254d308a92..f749857086fe9544461ac9093c980fdff3341662 100644 (file)
--- a/mark.c
+++ b/mark.c
@@ -645,7 +645,10 @@ GC_INNER mse * GC_mark_from(mse *mark_stack_top, mse *mark_stack,
           /* Process part of the range to avoid pushing too much on the */
           /* stack.                                                     */
           GC_ASSERT(descr < (word)GC_greatest_plausible_heap_addr
-                            - (word)GC_least_plausible_heap_addr);
+                            - (word)GC_least_plausible_heap_addr
+                || (word)(current_p + descr)
+                            <= (word)GC_least_plausible_heap_addr
+                || (word)current_p >= (word)GC_greatest_plausible_heap_addr);
 #         ifdef ENABLE_TRACE
             if ((word)GC_trace_addr >= (word)current_p
                 && (word)GC_trace_addr < (word)(current_p + descr)) {