summaryrefslogtreecommitdiffhomepage
path: root/src/gc.c
diff options
context:
space:
mode:
authorYukihiro "Matz" Matsumoto <[email protected]>2015-10-20 07:22:55 +0900
committerYukihiro "Matz" Matsumoto <[email protected]>2015-10-20 17:06:54 +0900
commitfc4f0b9be7133dc901d02bb938e90ffd1487e50a (patch)
tree17e7c73e9adcdd8a0056a77331d4039919360ca3 /src/gc.c
parentf07ee20260156e07c2ca5efe63bf0ea9f3ac8132 (diff)
downloadmruby-fc4f0b9be7133dc901d02bb938e90ffd1487e50a.tar.gz
mruby-fc4f0b9be7133dc901d02bb938e90ffd1487e50a.zip
do not assert is_dead() during mark phase; close #2825 ref #2996 #2769
Diffstat (limited to 'src/gc.c')
-rw-r--r--src/gc.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/gc.c b/src/gc.c
index 885368f37..d55a8901e 100644
--- a/src/gc.c
+++ b/src/gc.c
@@ -1153,7 +1153,7 @@ mrb_field_write_barrier(mrb_state *mrb, struct RBasic *obj, struct RBasic *value
if (!is_black(obj)) return;
if (!is_white(value)) return;
- mrb_assert(!is_dead(mrb, value) && !is_dead(mrb, obj));
+ mrb_assert(mrb->gc_state == GC_STATE_MARK || (!is_dead(mrb, value) && !is_dead(mrb, obj)));
mrb_assert(is_generational(mrb) || mrb->gc_state != GC_STATE_ROOT);
if (is_generational(mrb) || mrb->gc_state == GC_STATE_MARK) {