From: Narihiro Nakamura Date: 2010-07-20T13:47:09+09:00 Subject: [ruby-core:31365] [Bug #3555] segvs since r28570 Issue #3555 has been updated by Narihiro Nakamura. I found memory error on trunk: $ cat /tmp/t.rb require "/tmp/f.rb" module Kernel def require end GC.start GC.stress = true 10.times{ "a".dup } end $ cat /tmp/f.rb require "/tmp/t" $ valgrind ./ruby /tmp/f.rb ==11321== Memcheck, a memory error detector ==11321== Copyright (C) 2002-2009, and GNU GPL'd, by Julian Seward et al. ==11321== Using Valgrind-3.6.0.SVN-Debian and LibVEX; rerun with -h for copyright info ==11321== Command: ./ruby /tmp/f.rb ==11321== ==11321== Invalid write of size 1 ==11321== at 0x814AF5D: rb_thread_mark (vm.c:1651) ==11321== by 0x8065905: gc_mark_children (gc.c:1752) ==11321== by 0x80654A2: gc_mark (gc.c:1546) ==11321== by 0x80654DC: rb_gc_mark (gc.c:1552) ==11321== by 0x814AB63: vm_mark_each_thread_func (vm.c:1475) ==11321== by 0x80F0D2D: st_foreach (st.c:747) ==11321== by 0x814ABD0: rb_vm_mark (vm.c:1498) ==11321== by 0x8065905: gc_mark_children (gc.c:1752) ==11321== by 0x80654A2: gc_mark (gc.c:1546) ==11321== by 0x80654DC: rb_gc_mark (gc.c:1552) ==11321== by 0x8066DB5: gc_marks (gc.c:2340) ==11321== by 0x806662D: gc_lazy_sweep (gc.c:2067) ==11321== Address 0x43928e4 is 4 bytes inside a block of size 20 free'd ==11321== at 0x4024B3A: free (vg_replace_malloc.c:366) ==11321== by 0x8064203: vm_xfree (gc.c:752) ==11321== by 0x806435A: ruby_xfree (gc.c:800) ==11321== by 0x8142E70: rb_free_method_entry (vm_method.c:185) ==11321== by 0x8142DAC: rb_sweep_method_entry (vm_method.c:151) ==11321== by 0x8066304: after_gc_sweep (gc.c:2020) ==11321== by 0x8066622: gc_lazy_sweep (gc.c:2065) ==11321== by 0x80649A6: rb_newobj_from_heap (gc.c:1044) ==11321== by 0x8064A5F: rb_newobj (gc.c:1128) ==11321== by 0x80F1EF6: str_alloc (string.c:378) ==11321== by 0x80F3CF2: rb_str_resurrect (string.c:901) ==11321== by 0x813D7C1: vm_exec_core (insns.def:379) ==11321== ==11321== ==11321== HEAP SUMMARY: ==11321== in use at exit: 384,939 bytes in 14,320 blocks ==11321== total heap usage: 16,121 allocs, 1,801 frees, 1,528,828 bytes allocated ==11321== ==11321== LEAK SUMMARY: ==11321== definitely lost: 46,603 bytes in 1,639 blocks ==11321== indirectly lost: 198,711 bytes in 7,706 blocks ==11321== possibly lost: 164 bytes in 7 blocks ==11321== still reachable: 139,461 bytes in 4,968 blocks ==11321== suppressed: 0 bytes in 0 blocks ==11321== Rerun with --leak-check=full to see details of leaked memory ==11321== ==11321== For counts of detected and suppressed errors, rerun with: -v ==11321== ERROR SUMMARY: 2 errors from 1 contexts (suppressed: 29 from 10) I will fix it. ---------------------------------------- http://redmine.ruby-lang.org/issues/show/3555 ---------------------------------------- http://redmine.ruby-lang.org