diff --git a/ractor_sync.c b/ractor_sync.c index 5dfb86e3bff..5b513a1315d 100644 --- a/ractor_sync.c +++ b/ractor_sync.c @@ -126,7 +126,9 @@ ractor_port_receive(rb_execution_context_t *ec, VALUE self) rb_raise(rb_eRactorError, "only allowed from the creator Ractor of this port"); } - return ractor_receive(ec, rp); + VALUE v = ractor_receive(ec, rp); + RB_GC_GUARD(self); + return v; } static VALUE @@ -134,6 +136,7 @@ ractor_port_send(rb_execution_context_t *ec, VALUE self, VALUE obj, VALUE move) { const struct ractor_port *rp = RACTOR_PORT_PTR(self); ractor_send(ec, rp, obj, RTEST(move)); + RB_GC_GUARD(self); return self; }