Forum: Ruby-core File.open memory leak

Posted by fahmisetiawan (Fahmi Setiawan) (Guest)
on 2012-10-01 13:25
(Received via mailing list)
Issue #2009 has been updated by fahmisetiawan (Fahmi Setiawan).


http://alkian.blogspot.com/2012/09/cara-menyembuhk...
http://alkian.blogspot.com/2012/09/keretamini-kere...
http://alkian.blogspot.com/2012/09/harga-spesifika...
http://alkian.blogspot.com/2012/09/download-one-pi...
http://alkian.blogspot.com/2012/09/harga-dan-spesi...
http://alkian.blogspot.com/2012/09/harga-dan-spesi...
http://alkian.blogspot.com/2012/09/download-harves...
http://alkian.blogspot.com/2012/09/download-gratis...
http://alkian.blogspot.com/2012/09/cara-download-d...
http://alkian.blogspot.com/2012/09/cara-mengganti-...
http://alkian.blogspot.com/2012/09/free-download-w...
http://alkian.blogspot.com/2012/09/free-download-k...
http://alkian.blogspot.com/2012/09/free-download-c...
http://alkian.blogspot.com/2012/09/cara-membuat-re...
http://alkian.blogspot.com/2012/09/daftar-harga-le...
http://alkian.blogspot.com/2012/09/download-theme-...
http://alkian.blogspot.com/2012/09/download-alqura...
http://alkian.blogspot.com/2012/09/kumpulan-kata-k...
http://alkian.blogspot.com/2012/09/kumpulan-websit...
http://alkian.blogspot.com/2012/09/template-seo-fr...
http://alkian.blogspot.com/2012/09/harga-hp-nokia-...
http://alkian.blogspot.com/2012/09/foto-ariel-noah...
http://alkian.blogspot.com/2012/09/download-serial...
http://alkian.blogspot.com/2012/09/biodata-foto-iq...
http://alkian.blogspot.com/2012/09/harga-dan-spesi...
http://alkian.blogspot.com/2012/09/biodata-akb48-l...
http://alkian.blogspot.com/2012/08/arti-dan-makna-...
----------------------------------------
Backport #2009: File.open memory leak
https://bugs.ruby-lang.org/issues/2009#change-29898

Author: fibercut (Sven Engelhardt)
Status: Closed
Priority: Normal
Assignee: wyhaines (Kirk Haines)
Category:
Target version:


=begin
 File.open looses 28 bytes of memory on each call:
 (p72 releases the memory correctly, p160, p174 dont)

 big% cat rbtest

 20000.times do

 File.open("/etc/passwd","r") { |f|
   f.each { |l|
     l.chomp!
   }
 }

 end

 big% valgrind --leak-check=full /opt/valgrind/ruby/1.8.7-174/bin/ruby 
rbtest
 ==15828== Memcheck, a memory error detector.
 ==15828== Copyright (C) 2002-2007, and GNU GPL'd, by Julian Seward et 
al.
 ==15828== Using LibVEX rev 1804, a library for dynamic binary 
translation.
 ==15828== Copyright (C) 2004-2007, and GNU GPL'd, by OpenWorks LLP.
 ==15828== Using valgrind-3.3.0-Debian, a dynamic binary instrumentation 
framework.
 ==15828== Copyright (C) 2000-2007, and GNU GPL'd, by Julian Seward et 
al.
 ==15828== For more details, rerun with: -v
 ==15828==
 ==15828==
 ==15828== ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 21 from 
1)
 ==15828== malloc/free: in use at exit: 1,334,734 bytes in 31,012 
blocks.
 ==15828== malloc/free: 787,948 allocs, 756,936 frees, 101,067,560 bytes 
allocated.
 ==15828== For counts of detected errors, rerun with: -v
 ==15828== searching for pointers to 31,012 not-freed blocks.
 ==15828== checked 824,216 bytes.
 ==15828==
 ==15828== 557,312 (555,744 direct, 1,568 indirect) bytes in 19,848 
blocks are definitely lost in loss record 5 of 6
 ==15828==    at 0x4022AB8: malloc (vg_replace_malloc.c:207)
 ==15828==    by 0x80745B6: ruby_xmalloc (gc.c:158)
 ==15828==    by 0x807D02C: rb_file_open_internal (io.c:2993)
 ==15828==    by 0x807D1A5: rb_file_initialize (io.c:3422)
 ==15828==    by 0x8058053: call_cfunc (eval.c:5771)
 ==15828==    by 0x8061F92: rb_call0 (eval.c:5926)
 ==15828==    by 0x8062240: rb_call (eval.c:6173)
 ==15828==    by 0x80624F7: rb_obj_call_init (eval.c:7809)
 ==15828==    by 0x808AA99: rb_class_new_instance (object.c:1644)
 ==15828==    by 0x8079AEF: rb_io_s_open (io.c:3446)
 ==15828==    by 0x8058053: call_cfunc (eval.c:5771)
 ==15828==    by 0x8061F92: rb_call0 (eval.c:5926)
 ==15828==
 ==15828== LEAK SUMMARY:
 ==15828==    definitely lost: 555,744 bytes in 19,848 blocks.
 ==15828==    indirectly lost: 1,568 bytes in 56 blocks.
 ==15828==      possibly lost: 0 bytes in 0 blocks.
 ==15828==    still reachable: 777,422 bytes in 11,108 blocks.
 ==15828==         suppressed: 0 bytes in 0 blocks.
 ==15828== Reachable blocks (those to which a pointer was found) are not 
shown.
 ==15828== To see them, rerun with: --leak-check=full 
--show-reachable=yes
=end
Please log in before posting. Registration is free and takes only a minute.
Existing account (Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
No account? Register here.