8000 Fix memory leak of Ractor basket when sending to closed Ractor · github/ruby@d55c463 · GitHub
[go: up one dir, main page]

Skip to content

Commit d55c463

Browse files
committed
Fix memory leak of Ractor basket when sending to closed Ractor
The following script leaks memory: r = Ractor.new { } r.value 10.times do 100_000.times do r.send(123) rescue Ractor::ClosedError end puts `ps -o rss= -p #{$$}` end Before: 18508 25420 32460 40012 47308 54092 61132 68300 75724 83020 After: 11432 11432 11432 11432 11432 11432 11432 11432 11432 11688
1 parent a74c385 commit d55c463

File tree

8000 1 file changed

+1
-0
lines changed

1 file changed

+1
-0
lines changed

ractor_sync.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1197,6 +1197,7 @@ ractor_send_basket(rb_execution_context_t *ec, const struct ractor_port *rp, str
11971197
RUBY_DEBUG_LOG("closed:%u@r%u", (unsigned int)ractor_port_id(rp), rb_ractor_id(rp->r));
11981198

11991199
if (raise_on_error) {
1200+
ractor_basket_free(b);
12001201
rb_raise(rb_eRactorClosedError, "The port was already closed");
12011202
}
12021203
}

0 commit comments

Comments
 (0)
0