[ruby-core:114940] Re: [Ruby master Bug#18553] Memory leak on compiling method call with kwargs
From:
Игорь Пятчиц via ruby-core <ruby-core@...>
Date:
2023-10-02 14:07:20 UTC
List:
ruby-core #114940
=F0=9F=91=8D =D0=BF=D0=BD, 2 =D0=BE=D0=BA=D1=82. 2023=E2=80=AF=D0=B3. =D0=B2 01:57, pete= rzhu2118 (Peter Zhu) via ruby-core < ruby-core@ml.ruby-lang.org>: > Issue #18553 has been updated by peterzhu2118 (Peter Zhu). > > Status changed from Open to Closed > > This was fixed in #19906, so I will close this issue. > > ---------------------------------------- > Bug #18553: Memory leak on compiling method call with kwargs > https://bugs.ruby-lang.org/issues/18553#change-104808 > > * Author: ibylich (Ilya Bylich) > * Status: Closed > * Priority: Normal > * Assignee: ko1 (Koichi Sasada) > * ruby -v: ruby 3.2.0dev > * Backport: 2.6: UNKNOWN, 2.7: UNKNOWN, 3.0: UNKNOWN, 3.1: UNKNOWN > ---------------------------------------- > The following code produces a memory leak: > > ```ruby > p(foo: 1) > ``` > > It comes from the allocation in `compile.c`: > > ```c > struct rb_callinfo_kwarg *kw_arg =3D > rb_xmalloc_mul_add(len, sizeof(VALUE), sizeof(struct > rb_callinfo_kwarg)); > ``` > > Later it's packed into `struct rb_callinfo`, but `imemo_callinfo` is a > GC-managed object that has no `free` calls in `obj_free` function in gc.c= . > > [I've tried to fix it]( > https://github.com/ruby/ruby/pull/5488/files#diff-d1cee85c3b0e24a64519c11= 150abe26fd0b5d8628a23d356dd0b535ac4595d49R3397) > by calling `free` on `callinfo->kwarg` and it fixed leak in `./miniruby -= e > 'p(foo: 1)'`, but it breaks `make install`. My addition causes a > double-free error, looks like either `callinfo` or `callinfo->kwarg` is > shared between multiple objects. > `kwarg` field is a `const` pointer, so that's somewhat expected (I was > under impression that `const` qualifier is redundant) :) > > I'm pretty sure old versions of Ruby are also affected by this memory lea= k. > > > > -- > https://bugs.ruby-lang.org/ > ______________________________________________ > ruby-core mailing list -- ruby-core@ml.ruby-lang.org > To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org > ruby-core info -- > https://ml.ruby-lang.org/mailman3/postorius/lists/ruby-core.ml.ruby-lang.= org/ > ______________________________________________ ruby-core mailing list -- ruby-core@ml.ruby-lang.org To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org ruby-core info -- https://ml.ruby-lang.org/mailman3/postorius/lists/ruby-core.ml.ruby-lang.org/