From: nobu@... Date: 2014-03-06T04:08:38+00:00 Subject: [ruby-dev:48020] [ruby-trunk - Bug #9599] [Assigned] Fiddle::Function#call leaks memory Issue #9599 has been reported by Nobuyoshi Nakada. ---------------------------------------- Bug #9599: Fiddle::Function#call leaks memory https://bugs.ruby-lang.org/issues/9599 * Author: Nobuyoshi Nakada * Status: Assigned * Priority: Normal * Assignee: Aaron Patterson * Category: ext * Target version: current: 2.2.0 * ruby -v: r45270 * Backport: 1.9.3: UNKNOWN, 2.0.0: UNKNOWN, 2.1: UNKNOWN ---------------------------------------- `Fiddle::Function#call` seems leaking memory. With the following code: ```ruby # 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. ```sh $ 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. -- http://bugs.ruby-lang.org/