]> 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>
Tue, 5 Jul 2016 13:11:00 +0000 (16:11 +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 7e18e0e38fa26e010eab9a97ab2f6c92a27db207..99ce419316ea086d66bfcb68b68f6158aaf98ee1 100644 (file)
--- a/mark.c
+++ b/mark.c
@@ -636,7 +636,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)) {