On Thu, 29 Dec 2016 15:47:40 +0900
"KISHIMOTO, Makoto" <ksmakoto / dd.iij4u.or.jp> wrote:
> きしもとです
> 
> こちらの件についてですが、原因はこの変更自体ではなく、(GMP)gcdでした。
> もう少し追ってみます。

rational.c の中の gcd_gmp ですが、リークしているように見えます。

diff --git a/rational.c b/rational.c
index a78b347..7114020 100644
--- a/rational.c
+++ b/rational.c
@@ -261,10 +261,15 @@ rb_gcd_gmp(VALUE x, VALUE y)
 
     mpz_gcd(mz, mx, my);
 
+    mpz_clear(mx);
+    mpz_clear(my);
+
     zn = (mpz_sizeinbase(mz, 16) + SIZEOF_BDIGIT*2 - 1) / (SIZEOF_BDIGIT*2);
     z = rb_big_new(zn, 1);
     mpz_export(BIGNUM_DIGITS(z), &count, -1, sizeof(BDIGIT), 0, nails, mz);
 
+    mpz_clear(mz);
+
     return rb_big_norm(z);
 }
 #endif