Issue #9599 has been updated by Usaku NAKAMURA.
Backport changed from 1.9.3: UNKNOWN, 2.0.0: REQUIRED, 2.1: DONE to
1.9.3: UNKNOWN, 2.0.0: DONE, 2.1: DONE
Bug #9599: Fiddle::Function#call leaks memory
- Author: Nobuyoshi N.
- Status: Closed
- Priority: Normal
- Assignee: Aaron P.
- Category: ext
- Target version: current: 2.2.0
- ruby -v: r45270
- Backport: 1.9.3: UNKNOWN, 2.0.0: DONE, 2.1: DONE
Fiddle::Function#call
seems leaking memory.
With the following code:
# fiddle-memleak.rb
require 'fiddle'
n = 10
a = ["a"] * n
f = Fiddle::Function.new(Fiddle.dlopen(nil)["rb_obj_tainted"],
[Fiddle::TYPE_VOIDP]*n, Fiddle::TYPE_VOID)
loop {f.call(*a); GC.start}
VSZ and RSS increase continuaslly.
$ ruby fiddle-memleak.rb & while ps -ovsz=,rss= $!; do sleep 1; done
[1] 93595
2423344 24
2461024 8884
2463072 10420
2464096 11940
2465120 13428
2467168 14948
2468192 16476
2469216 17980
2471264 19432
2473312 20940
2474336 22424
2475360 23936
2478432 25468
2481504 26996
2482528 28468
2483552 29984
2485600 31524
2486624 33056
2487652 34568
2488676 36100
2490724 37628
2491748 39152
RGenGC seems unrelated since the result in 2.0.0 is similar.