Project

General

Profile

Actions

Bug #9069

closed

test_weakref.rb with GC.stress causes [BUG] rb_gc_mark(): 0x8024ee94 is T_ZOMBIE

Added by akr (Akira Tanaka) over 10 years ago. Updated over 10 years ago.

Status:
Closed
Assignee:
-
Target version:
-
ruby -v:
ruby 2.1.0dev (2013-11-01 trunk 43497) [i686-linux]
[ruby-dev:47786]

Description

気がついたのですが、GC.stress = true で test/test_weakref.rb を動かすと、
[BUG] rb_gc_mark(): 0x8024ee94 is T_ZOMBIE
というようなメッセージで異常終了することがあります。

たとえば、boron の ~akr/tst1 に install したものでは以下のようになりました。

boron% pwd
/home/akr/tst1/ruby
boron% ./ruby -e 'GC.stress = true; load("test/test_weakref.rb")'
Run options:

Running tests:

[2/4] TestWeakRef#test_recycled = 1.02 s

  1. Failure:
    TestWeakRef#test_recycled [test/test_weakref.rb:20]:
    Exception raised:
    <#<WeakRef::RefError: Invalid Reference - probably recycled>>.

[3/4] TestWeakRef#test_ref/home/akr/tst1/lib/ruby/2.1.0/weakref.rb:84: [BUG] rb_gc_mark(): 0x8024ee94 is T_ZOMBIE
ruby 2.1.0dev (2013-11-01 trunk 43497) [i686-linux]

-- Control frame information -----------------------------------------------
c:0028 p:---- s:0123 e:000122 CFUNC :===
c:0027 p:0011 s:0121 e:000119 METHOD /home/akr/tst1/lib/ruby/2.1.0/weakref.rb:84 [FINISH]
c:0026 p:---- s:0116 e:000115 CFUNC :new
c:0025 p:0015 s:0112 e:000111 BLOCK test/test_weakref.rb:9 [FINISH]
c:0024 p:---- s:0110 e:000109 CFUNC :times
c:0023 p:0033 s:0107 e:000106 METHOD test/test_weakref.rb:9
c:0022 p:0007 s:0101 e:000100 METHOD test/test_weakref.rb:14
c:0021 p:0038 s:0096 e:000095 METHOD /home/akr/tst1/lib/ruby/2.1.0/test/unit.rb:869
c:0020 p:0069 s:0091 e:000090 METHOD /home/akr/tst1/lib/ruby/2.1.0/minitest/unit.rb:1265
c:0019 p:0019 s:0083 e:000082 METHOD /home/akr/tst1/lib/ruby/2.1.0/test/unit/testcase.rb:17
c:0018 p:0068 s:0079 e:000078 BLOCK /home/akr/tst1/lib/ruby/2.1.0/minitest/unit.rb:940 [FINISH]
c:0017 p:---- s:0073 e:000072 CFUNC :map
c:0016 p:0103 s:0070 e:000069 METHOD /home/akr/tst1/lib/ruby/2.1.0/minitest/unit.rb:933
c:0015 p:0015 s:0060 e:000058 BLOCK /home/akr/tst1/lib/ruby/2.1.0/test/unit.rb:663 [FINISH]
c:0014 p:---- s:0055 e:000054 CFUNC :each
c:0013 p:0067 s:0052 e:000051 METHOD /home/akr/tst1/lib/ruby/2.1.0/test/unit.rb:661
c:0012 p:0135 s:0046 e:000045 METHOD /home/akr/tst1/lib/ruby/2.1.0/minitest/unit.rb:884
c:0011 p:0009 s:0036 e:000035 METHOD /home/akr/tst1/lib/ruby/2.1.0/minitest/unit.rb:1092
c:0010 p:0009 s:0033 e:000032 BLOCK /home/akr/tst1/lib/ruby/2.1.0/minitest/unit.rb:1079 [FINISH]
c:0009 p:---- s:0030 e:000029 CFUNC :each
c:0008 p:0048 s:0027 e:000026 METHOD /home/akr/tst1/lib/ruby/2.1.0/minitest/unit.rb:1078
c:0007 p:0017 s:0023 e:000022 METHOD /home/akr/tst1/lib/ruby/2.1.0/minitest/unit.rb:1066
c:0006 p:0019 s:0019 e:000018 METHOD /home/akr/tst1/lib/ruby/2.1.0/test/unit.rb:27
c:0005 p:0010 s:0015 e:000014 METHOD /home/akr/tst1/lib/ruby/2.1.0/test/unit.rb:780
c:0004 p:0027 s:0010 e:000008 BLOCK /home/akr/tst1/lib/ruby/2.1.0/test/unit.rb:372
c:0003 p:0031 s:0007 e:000006 METHOD /home/akr/tst1/lib/ruby/2.1.0/test/unit.rb:33
c:0002 p:0024 s:0004 e:000003 BLOCK /home/akr/tst1/lib/ruby/2.1.0/test/unit.rb:371 [FINISH]
c:0001 p:0000 s:0002 E:fffff04c TOP [FINISH]

/home/akr/tst1/lib/ruby/2.1.0/test/unit.rb:371:in block in autorun' /home/akr/tst1/lib/ruby/2.1.0/test/unit.rb:33:in run_once'
/home/akr/tst1/lib/ruby/2.1.0/test/unit.rb:372:in block (2 levels) in autorun' /home/akr/tst1/lib/ruby/2.1.0/test/unit.rb:780:in run'
/home/akr/tst1/lib/ruby/2.1.0/test/unit.rb:27:in run' /home/akr/tst1/lib/ruby/2.1.0/minitest/unit.rb:1066:in run'
/home/akr/tst1/lib/ruby/2.1.0/minitest/unit.rb:1078:in _run' /home/akr/tst1/lib/ruby/2.1.0/minitest/unit.rb:1078:in each'
/home/akr/tst1/lib/ruby/2.1.0/minitest/unit.rb:1079:in block in _run' /home/akr/tst1/lib/ruby/2.1.0/minitest/unit.rb:1092:in run_tests'
/home/akr/tst1/lib/ruby/2.1.0/minitest/unit.rb:884:in _run_anything' /home/akr/tst1/lib/ruby/2.1.0/test/unit.rb:661:in _run_suites'
/home/akr/tst1/lib/ruby/2.1.0/test/unit.rb:661:in each' /home/akr/tst1/lib/ruby/2.1.0/test/unit.rb:663:in block in _run_suites'
/home/akr/tst1/lib/ruby/2.1.0/minitest/unit.rb:933:in _run_suite' /home/akr/tst1/lib/ruby/2.1.0/minitest/unit.rb:933:in map'
/home/akr/tst1/lib/ruby/2.1.0/minitest/unit.rb:940:in block in _run_suite' /home/akr/tst1/lib/ruby/2.1.0/test/unit/testcase.rb:17:in run'
/home/akr/tst1/lib/ruby/2.1.0/minitest/unit.rb:1265:in run' /home/akr/tst1/lib/ruby/2.1.0/test/unit.rb:869:in run_test'
test/test_weakref.rb:14:in test_ref' test/test_weakref.rb:9:in make_weakref'
test/test_weakref.rb:9:in times' test/test_weakref.rb:9:in block in make_weakref'
test/test_weakref.rb:9:in new' /home/akr/tst1/lib/ruby/2.1.0/weakref.rb:84:in initialize'
/home/akr/tst1/lib/ruby/2.1.0/weakref.rb:84:in `==='

-- C level backtrace information -------------------------------------------
-e: TestWeakRef#test_ref(+0x1463e7) [0x801463e7]
-e: TestWeakRef#test_ref(+0x1464d2) [0x801464d2]
-e: TestWeakRef#test_ref(+0x1972bd) [0x801972bd]
-e: TestWeakRef#test_ref(rb_bug+0x5f) [0x801973bb]
-e: TestWeakRef#test_ref(+0x30503) [0x80030503]
-e: TestWeakRef#test_ref(+0x305ad) [0x800305ad]
-e: TestWeakRef#test_ref(+0x30783) [0x80030783]
-e: TestWeakRef#test_ref(+0x3084a) [0x8003084a]
-e: TestWeakRef#test_ref(+0x308a9) [0x800308a9]
-e: TestWeakRef#test_ref(+0x3172b) [0x8003172b]
-e: TestWeakRef#test_ref(+0x31864) [0x80031864]
-e: TestWeakRef#test_ref(+0x2be55) [0x8002be55]
-e: TestWeakRef#test_ref(rb_newobj_of+0x30) [0x8002bfbd]
-e: TestWeakRef#test_ref(+0x15b54a) [0x8015b54a]
-e: TestWeakRef#test_ref(+0x15b642) [0x8015b642]
-e: TestWeakRef#test_ref(rb_ary_new_capa+0x29) [0x8015b677]
-e: TestWeakRef#test_ref(rb_ary_new_from_args+0x1d) [0x8015b6ae]
-e: TestWeakRef#test_ref(+0x2d3b6) [0x8002d3b6]
-e: TestWeakRef#test_ref(+0x2d565) [0x8002d565]
-e: TestWeakRef#test_ref(+0x2d59e) [0x8002d59e]
-e: TestWeakRef#test_ref(+0x2d634) [0x8002d634]
-e: TestWeakRef#test_ref(+0x2d675) [0x8002d675]
-e: TestWeakRef#test_ref(rb_postponed_job_flush+0xc9) [0x8014b953]
-e: TestWeakRef#test_ref(+0x15001b) [0x8015001b]
-e: TestWeakRef#test_ref(+0x13c934) [0x8013c934]
-e: TestWeakRef#test_ref(+0x13c214) [0x8013c214]
-e: TestWeakRef#test_ref(+0x13cbd1) [0x8013cbd1]
-e: TestWeakRef#test_ref(+0x13d57d) [0x8013d57d]
-e: TestWeakRef#test_ref(rb_funcall+0x9f) [0x8013dd3e]
-e: TestWeakRef#test_ref(rb_equal+0x43) [0x80061959]
-e: TestWeakRef#test_ref(+0x130491) [0x80130491]
-e: TestWeakRef#test_ref(+0x13c393) [0x8013c393]
-e: TestWeakRef#test_ref(+0x13c462) [0x8013c462]
-e: TestWeakRef#test_ref(+0x13c5aa) [0x8013c5aa]
-e: TestWeakRef#test_ref(+0x13c214) [0x8013c214]
-e: TestWeakRef#test_ref(+0x12f59a) [0x8012f59a]
-e: TestWeakRef#test_ref(+0x1346f5) [0x801346f5]
-e: TestWeakRef#test_ref(+0x142718) [0x80142718]
-e: TestWeakRef#test_ref(+0x13c58c) [0x8013c58c]
-e: TestWeakRef#test_ref(+0x13c214) [0x8013c214]
-e: TestWeakRef#test_ref(+0x13cbd1) [0x8013cbd1]
-e: TestWeakRef#test_ref(+0x13d57d) [0x8013d57d]
-e: TestWeakRef#test_ref(rb_funcallv+0x2e) [0x8013dd7f]
-e: TestWeakRef#test_ref(rb_obj_call_init+0x64) [0x8001cab3]
-e: TestWeakRef#test_ref(rb_class_new_instance+0x39) [0x800635fb]
-e: TestWeakRef#test_ref(+0x130462) [0x80130462]
-e: TestWeakRef#test_ref(+0x130e69) [0x80130e69]
-e: TestWeakRef#test_ref(+0x130f36) [0x80130f36]
-e: TestWeakRef#test_ref(+0x134fee) [0x80134fee]
-e: TestWeakRef#test_ref(+0x142718) [0x80142718]
-e: TestWeakRef#test_ref(+0x141294) [0x80141294]
-e: TestWeakRef#test_ref(+0x1413ca) [0x801413ca]
-e: TestWeakRef#test_ref(+0x13e02a) [0x8013e02a]
-e: TestWeakRef#test_ref(rb_yield+0x37) [0x8013e063]
-e: TestWeakRef#test_ref(+0x5fb83) [0x8005fb83]
-e: TestWeakRef#test_ref(+0x130475) [0x80130475]
-e: TestWeakRef#test_ref(+0x130e69) [0x80130e69]
-e: TestWeakRef#test_ref(+0x130f36) [0x80130f36]
-e: TestWeakRef#test_ref(+0x134f06) [0x80134f06]
-e: TestWeakRef#test_ref(+0x142718) [0x80142718]
-e: TestWeakRef#test_ref(+0x141294) [0x80141294]
-e: TestWeakRef#test_ref(+0x1413ca) [0x801413ca]
-e: TestWeakRef#test_ref(+0x13e02a) [0x8013e02a]
-e: TestWeakRef#test_ref(rb_yield+0x37) [0x8013e063]
-e: TestWeakRef#test_ref(+0x16136d) [0x8016136d]
-e: TestWeakRef#test_ref(+0x130475) [0x80130475]
-e: TestWeakRef#test_ref(+0x130e69) [0x80130e69]
-e: TestWeakRef#test_ref(+0x130f36) [0x80130f36]
-e: TestWeakRef#test_ref(+0x134f06) [0x80134f06]
-e: TestWeakRef#test_ref(+0x142718) [0x80142718]
-e: TestWeakRef#test_ref(+0x141294) [0x80141294]
-e: TestWeakRef#test_ref(+0x1413ca) [0x801413ca]
-e: TestWeakRef#test_ref(+0x13e02a) [0x8013e02a]
-e: TestWeakRef#test_ref(rb_yield+0x37) [0x8013e063]
-e: TestWeakRef#test_ref(rb_ary_each+0x90) [0x8015f1d8]
-e: TestWeakRef#test_ref(+0x130475) [0x80130475]
-e: TestWeakRef#test_ref(+0x130e69) [0x80130e69]
-e: TestWeakRef#test_ref(+0x130f36) [0x80130f36]
-e: TestWeakRef#test_ref(+0x1317ce) [0x801317ce]
-e: TestWeakRef#test_ref(+0x131dfc) [0x80131dfc]
-e: TestWeakRef#test_ref(+0x134f06) [0x80134f06]
-e: TestWeakRef#test_ref(+0x142718) [0x80142718]
-e: TestWeakRef#test_ref(+0x141294) [0x80141294]
-e: TestWeakRef#test_ref(+0x1413ca) [0x801413ca]
-e: TestWeakRef#test_ref(+0x13e02a) [0x8013e02a]
-e: TestWeakRef#test_ref(rb_yield+0x37) [0x8013e063]
-e: TestWeakRef#test_ref(rb_ary_each+0x90) [0x8015f1d8]
-e: TestWeakRef#test_ref(+0x130475) [0x80130475]
-e: TestWeakRef#test_ref(+0x130e69) [0x80130e69]
-e: TestWeakRef#test_ref(+0x130f36) [0x80130f36]
-e: TestWeakRef#test_ref(+0x1317ce) [0x801317ce]
-e: TestWeakRef#test_ref(+0x131dfc) [0x80131dfc]
-e: TestWeakRef#test_ref(+0x134f06) [0x80134f06]
-e: TestWeakRef#test_ref(+0x142718) [0x80142718]
-e: TestWeakRef#test_ref(+0x141294) [0x80141294]
-e: TestWeakRef#test_ref(+0x14148c) [0x8014148c]
-e: TestWeakRef#test_ref(+0x14151d) [0x8014151d]
-e: TestWeakRef#test_ref(rb_proc_call+0x80) [0x8001e3ec]
-e: TestWeakRef#test_ref(+0x1a016) [0x8001a016]
-e: TestWeakRef#test_ref(rb_exec_end_proc+0x185) [0x8001a2e0]
-e: TestWeakRef#test_ref(+0x1a5cf) [0x8001a5cf]
-e: TestWeakRef#test_ref(ruby_cleanup+0x158) [0x8001a778]
-e: TestWeakRef#test_ref(ruby_run_node+0x40) [0x8001aaec]
-e: TestWeakRef#test_ref(+0x1921a) [0x8001921a]
/lib/i686/nosegneg/libc.so.6(__libc_start_main+0xe6) [0xb7d45ca6] libc-start.c:228
-e: TestWeakRef#test_ref(+0x190d1) [0x800190d1]

-- Other runtime information -----------------------------------------------

  • Loaded script: -e: TestWeakRef#test_ref

  • Loaded features:

    0 enumerator.so
    1 /home/akr/tst1/lib/ruby/2.1.0/i686-linux/enc/encdb.so
    2 /home/akr/tst1/lib/ruby/2.1.0/i686-linux/enc/trans/transdb.so
    3 /home/akr/tst1/lib/ruby/2.1.0/i686-linux/rbconfig.rb
    4 /home/akr/tst1/lib/ruby/2.1.0/rubygems/compatibility.rb
    5 /home/akr/tst1/lib/ruby/2.1.0/rubygems/defaults.rb
    6 /home/akr/tst1/lib/ruby/2.1.0/rubygems/deprecate.rb
    7 /home/akr/tst1/lib/ruby/2.1.0/rubygems/errors.rb
    8 /home/akr/tst1/lib/ruby/2.1.0/rubygems/version.rb
    9 /home/akr/tst1/lib/ruby/2.1.0/rubygems/requirement.rb
    10 /home/akr/tst1/lib/ruby/2.1.0/rubygems/platform.rb
    11 /home/akr/tst1/lib/ruby/2.1.0/rubygems/basic_specification.rb
    12 /home/akr/tst1/lib/ruby/2.1.0/rubygems/stub_specification.rb
    13 /home/akr/tst1/lib/ruby/2.1.0/rubygems/specification.rb
    14 /home/akr/tst1/lib/ruby/2.1.0/rubygems/exceptions.rb
    15 /home/akr/tst1/lib/ruby/2.1.0/rubygems/core_ext/kernel_gem.rb
    16 /home/akr/tst1/lib/ruby/2.1.0/thread.rb
    17 /home/akr/tst1/lib/ruby/2.1.0/monitor.rb
    18 /home/akr/tst1/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb
    19 /home/akr/tst1/lib/ruby/2.1.0/rubygems.rb
    20 /home/akr/tst1/lib/ruby/2.1.0/rubygems/dependency.rb
    21 /home/akr/tst1/lib/ruby/2.1.0/rubygems/path_support.rb
    22 /home/akr/tst1/lib/ruby/2.1.0/optparse.rb
    23 /home/akr/tst1/lib/ruby/2.1.0/minitest/unit.rb
    24 /home/akr/tst1/lib/ruby/2.1.0/prettyprint.rb
    25 /home/akr/tst1/lib/ruby/2.1.0/pp.rb
    26 /home/akr/tst1/lib/ruby/2.1.0/test/unit/assertions.rb
    27 /home/akr/tst1/lib/ruby/2.1.0/test/unit/testcase.rb
    28 /home/akr/tst1/lib/ruby/2.1.0/test/unit.rb
    29 /home/akr/tst1/lib/ruby/2.1.0/delegate.rb
    30 /home/akr/tst1/lib/ruby/2.1.0/weakref.rb
    31 /home/akr/tst1/lib/ruby/2.1.0/open3.rb
    32 /home/akr/tst1/lib/ruby/2.1.0/timeout.rb
    33 /home/akr/tst1/ruby/test/ruby/envutil.rb
    34 /home/akr/tst1/lib/ruby/2.1.0/i686-linux/io/console.so

  • Process memory map:

80000000-80225000 r-xp 00000000 ca:03 319812 /home/akr/tst1/ruby/ruby
80225000-80229000 rw-p 00225000 ca:03 319812 /home/akr/tst1/ruby/ruby
80229000-80594000 rw-p 80229000 00:00 0 [heap]
b7c7d000-b7c9a000 r-xp 00000000 ca:02 278530 /lib/libgcc_s.so.1
b7c9a000-b7c9b000 rw-p 0001c000 ca:02 278530 /lib/libgcc_s.so.1
b7ca8000-b7cab000 r-xp 00000000 ca:03 468021 /home/akr/tst1/lib/ruby/2.1.0/i686-linux/io/console.so
b7cab000-b7cac000 rw-p 00002000 ca:03 468021 /home/akr/tst1/lib/ruby/2.1.0/i686-linux/io/console.so
b7cac000-b7d2f000 rw-p b7cac000 00:00 0
b7d2f000-b7e72000 r-xp 00000000 ca:02 83914 /lib/i686/nosegneg/libc-2.11.3.so
b7e72000-b7e74000 r--p 00143000 ca:02 83914 /lib/i686/nosegneg/libc-2.11.3.so
b7e74000-b7e75000 rw-p 00145000 ca:02 83914 /lib/i686/nosegneg/libc-2.11.3.so
b7e75000-b7e78000 rw-p b7e75000 00:00 0
b7e78000-b7e9c000 r-xp 00000000 ca:02 83026 /lib/i686/nosegneg/libm-2.11.3.so
b7e9c000-b7e9d000 r--p 00023000 ca:02 83026 /lib/i686/nosegneg/libm-2.11.3.so
b7e9d000-b7e9e000 rw-p 00024000 ca:02 83026 /lib/i686/nosegneg/libm-2.11.3.so
b7e9e000-b7ea7000 r-xp 00000000 ca:02 83251 /lib/i686/nosegneg/libcrypt-2.11.3.so
b7ea7000-b7ea8000 r--p 00008000 ca:02 83251 /lib/i686/nosegneg/libcrypt-2.11.3.so
b7ea8000-b7ea9000 rw-p 00009000 ca:02 83251 /lib/i686/nosegneg/libcrypt-2.11.3.so
b7ea9000-b7ed0000 rw-p b7ea9000 00:00 0
b7ed0000-b7ed2000 r-xp 00000000 ca:02 83024 /lib/i686/nosegneg/libdl-2.11.3.so
b7ed2000-b7ed3000 r--p 00001000 ca:02 83024 /lib/i686/nosegneg/libdl-2.11.3.so
b7ed3000-b7ed4000 rw-p 00002000 ca:02 83024 /lib/i686/nosegneg/libdl-2.11.3.so
b7ed4000-b7ed5000 rw-p b7ed4000 00:00 0
b7ed5000-b7f32000 r-xp 00000000 ca:02 170351 /usr/lib/libgmp.so.3.5.2
b7f32000-b7f33000 rw-p 0005d000 ca:02 170351 /usr/lib/libgmp.so.3.5.2
b7f33000-b7f3a000 r-xp 00000000 ca:02 83913 /lib/i686/nosegneg/librt-2.11.3.so
b7f3a000-b7f3b000 r--p 00006000 ca:02 83913 /lib/i686/nosegneg/librt-2.11.3.so
b7f3b000-b7f3c000 rw-p 00007000 ca:02 83913 /lib/i686/nosegneg/librt-2.11.3.so
b7f3c000-b7f51000 r-xp 00000000 ca:02 83903 /lib/i686/nosegneg/libpthread-2.11.3.so
b7f51000-b7f52000 r--p 00014000 ca:02 83903 /lib/i686/nosegneg/libpthread-2.11.3.so
b7f52000-b7f53000 rw-p 00015000 ca:02 83903 /lib/i686/nosegneg/libpthread-2.11.3.so
b7f53000-b7f55000 rw-p b7f53000 00:00 0
b7f56000-b7f57000 rw-p b7f56000 00:00 0
b7f57000-b7f5a000 r-xp 00000000 ca:03 467993 /home/akr/tst1/lib/ruby/2.1.0/i686-linux/enc/trans/transdb.so
b7f5a000-b7f5b000 rw-p 00002000 ca:03 467993 /home/akr/tst1/lib/ruby/2.1.0/i686-linux/enc/trans/transdb.so
b7f5b000-b7f5d000 r-xp 00000000 ca:03 467962 /home/akr/tst1/lib/ruby/2.1.0/i686-linux/enc/encdb.so
b7f5d000-b7f5e000 rw-p 00001000 ca:03 467962 /home/akr/tst1/lib/ruby/2.1.0/i686-linux/enc/encdb.so
b7f5e000-b7f5f000 ---p b7f5e000 00:00 0
b7f5f000-b7f66000 rw-p b7f5f000 00:00 0
b7f66000-b7f67000 r-xp b7f66000 00:00 0 [vdso]
b7f67000-b7f82000 r-xp 00000000 ca:02 278816 /lib/ld-2.11.3.so
b7f82000-b7f83000 r--p 0001b000 ca:02 278816 /lib/ld-2.11.3.so
b7f83000-b7f84000 rw-p 0001c000 ca:02 278816 /lib/ld-2.11.3.so
bfe6b000-bfe81000 rw-p bfe6b000 00:00 0 [stack]

[NOTE]
You may have encountered a bug in the Ruby interpreter or extension libraries.
Bug reports are welcome.
For details: http://www.ruby-lang.org/bugreport.html

zsh: abort ./ruby -e 'GC.stress = true; load("test/test_weakref.rb")'

boron は以下のように Debian GNU/Linux 6.0.8 (squeeze) です。

boron% lsb_release -idrc
Distributor ID: Debian
Description: Debian GNU/Linux 6.0.8 (squeeze)
Release: 6.0.8
Codename: squeeze
boron% uname -mrsv
Linux 2.6.18-6-xen-686 #1 SMP Thu Nov 5 19:54:42 UTC 2009 i686

なお、この結果はあまり安定したものではないようで、異常終了しない環境もあります。

Actions #1

Updated by nobu (Nobuyoshi Nakada) over 10 years ago

  • Status changed from Open to Closed
  • % Done changed from 0 to 100

This issue was solved with changeset r43502.
Akira, thank you for reporting this issue.
Your contribution to Ruby is greatly appreciated.
May Ruby be with you.


gc.c: zombie is not alive

Updated by akr (Akira Tanaka) over 10 years ago

  • Status changed from Closed to Open

直っていないように思います。

boron% ./ruby -e 'GC.stress = true; load("test/test_weakref.rb")'
Run options:

Running tests:

[2/4] TestWeakRef#test_recycled = 1.04 s

  1. Failure:
    TestWeakRef#test_recycled [test/test_weakref.rb:20]:
    Exception raised:
    <#<WeakRef::RefError: Invalid Reference - probably recycled>>.

[3/4] TestWeakRef#test_ref/home/akr/tst1/lib/ruby/2.1.0/weakref.rb:84: [BUG] rb_gc_mark(): 0x8024eebc is T_ZOMBIE
ruby 2.1.0dev (2013-11-01 trunk 43504) [i686-linux]

-- Control frame information -----------------------------------------------
c:0028 p:---- s:0123 e:000122 CFUNC :===
c:0027 p:0011 s:0121 e:000119 METHOD /home/akr/tst1/lib/ruby/2.1.0/weakref.rb:84 [FINISH]
c:0026 p:---- s:0116 e:000115 CFUNC :new
c:0025 p:0015 s:0112 e:000111 BLOCK test/test_weakref.rb:9 [FINISH]
c:0024 p:---- s:0110 e:000109 CFUNC :times
c:0023 p:0033 s:0107 e:000106 METHOD test/test_weakref.rb:9
c:0022 p:0007 s:0101 e:000100 METHOD test/test_weakref.rb:14
c:0021 p:0038 s:0096 e:000095 METHOD /home/akr/tst1/lib/ruby/2.1.0/test/unit.rb:869
c:0020 p:0069 s:0091 e:000090 METHOD /home/akr/tst1/lib/ruby/2.1.0/minitest/unit.rb:1265
c:0019 p:0019 s:0083 e:000082 METHOD /home/akr/tst1/lib/ruby/2.1.0/test/unit/testcase.rb:17
c:0018 p:0068 s:0079 e:000078 BLOCK /home/akr/tst1/lib/ruby/2.1.0/minitest/unit.rb:940 [FINISH]
c:0017 p:---- s:0073 e:000072 CFUNC :map
c:0016 p:0103 s:0070 e:000069 METHOD /home/akr/tst1/lib/ruby/2.1.0/minitest/unit.rb:933
c:0015 p:0015 s:0060 e:000058 BLOCK /home/akr/tst1/lib/ruby/2.1.0/test/unit.rb:663 [FINISH]
c:0014 p:---- s:0055 e:000054 CFUNC :each
c:0013 p:0067 s:0052 e:000051 METHOD /home/akr/tst1/lib/ruby/2.1.0/test/unit.rb:661
c:0012 p:0135 s:0046 e:000045 METHOD /home/akr/tst1/lib/ruby/2.1.0/minitest/unit.rb:884
c:0011 p:0009 s:0036 e:000035 METHOD /home/akr/tst1/lib/ruby/2.1.0/minitest/unit.rb:1092
c:0010 p:0009 s:0033 e:000032 BLOCK /home/akr/tst1/lib/ruby/2.1.0/minitest/unit.rb:1079 [FINISH]
c:0009 p:---- s:0030 e:000029 CFUNC :each
c:0008 p:0048 s:0027 e:000026 METHOD /home/akr/tst1/lib/ruby/2.1.0/minitest/unit.rb:1078
c:0007 p:0017 s:0023 e:000022 METHOD /home/akr/tst1/lib/ruby/2.1.0/minitest/unit.rb:1066
c:0006 p:0019 s:0019 e:000018 METHOD /home/akr/tst1/lib/ruby/2.1.0/test/unit.rb:27
c:0005 p:0010 s:0015 e:000014 METHOD /home/akr/tst1/lib/ruby/2.1.0/test/unit.rb:780
c:0004 p:0027 s:0010 e:000008 BLOCK /home/akr/tst1/lib/ruby/2.1.0/test/unit.rb:372
c:0003 p:0031 s:0007 e:000006 METHOD /home/akr/tst1/lib/ruby/2.1.0/test/unit.rb:33
c:0002 p:0024 s:0004 e:000003 BLOCK /home/akr/tst1/lib/ruby/2.1.0/test/unit.rb:371 [FINISH]
c:0001 p:0000 s:0002 E:fffff04c TOP [FINISH]

/home/akr/tst1/lib/ruby/2.1.0/test/unit.rb:371:in block in autorun' /home/akr/tst1/lib/ruby/2.1.0/test/unit.rb:33:in run_once'
/home/akr/tst1/lib/ruby/2.1.0/test/unit.rb:372:in block (2 levels) in autorun' /home/akr/tst1/lib/ruby/2.1.0/test/unit.rb:780:in run'
/home/akr/tst1/lib/ruby/2.1.0/test/unit.rb:27:in run' /home/akr/tst1/lib/ruby/2.1.0/minitest/unit.rb:1066:in run'
/home/akr/tst1/lib/ruby/2.1.0/minitest/unit.rb:1078:in _run' /home/akr/tst1/lib/ruby/2.1.0/minitest/unit.rb:1078:in each'
/home/akr/tst1/lib/ruby/2.1.0/minitest/unit.rb:1079:in block in _run' /home/akr/tst1/lib/ruby/2.1.0/minitest/unit.rb:1092:in run_tests'
/home/akr/tst1/lib/ruby/2.1.0/minitest/unit.rb:884:in _run_anything' /home/akr/tst1/lib/ruby/2.1.0/test/unit.rb:661:in _run_suites'
/home/akr/tst1/lib/ruby/2.1.0/test/unit.rb:661:in each' /home/akr/tst1/lib/ruby/2.1.0/test/unit.rb:663:in block in _run_suites'
/home/akr/tst1/lib/ruby/2.1.0/minitest/unit.rb:933:in _run_suite' /home/akr/tst1/lib/ruby/2.1.0/minitest/unit.rb:933:in map'
/home/akr/tst1/lib/ruby/2.1.0/minitest/unit.rb:940:in block in _run_suite' /home/akr/tst1/lib/ruby/2.1.0/test/unit/testcase.rb:17:in run'
/home/akr/tst1/lib/ruby/2.1.0/minitest/unit.rb:1265:in run' /home/akr/tst1/lib/ruby/2.1.0/test/unit.rb:869:in run_test'
test/test_weakref.rb:14:in test_ref' test/test_weakref.rb:9:in make_weakref'
test/test_weakref.rb:9:in times' test/test_weakref.rb:9:in block in make_weakref'
test/test_weakref.rb:9:in new' /home/akr/tst1/lib/ruby/2.1.0/weakref.rb:84:in initialize'
/home/akr/tst1/lib/ruby/2.1.0/weakref.rb:84:in `==='

-- C level backtrace information -------------------------------------------
-e: TestWeakRef#test_ref(+0x14642f) [0x8014642f]
-e: TestWeakRef#test_ref(+0x14651a) [0x8014651a]
-e: TestWeakRef#test_ref(+0x197305) [0x80197305]
-e: TestWeakRef#test_ref(rb_bug+0x5f) [0x80197403]
-e: TestWeakRef#test_ref(+0x30538) [0x80030538]
-e: TestWeakRef#test_ref(+0x305e2) [0x800305e2]
-e: TestWeakRef#test_ref(+0x307b8) [0x800307b8]
-e: TestWeakRef#test_ref(+0x3087f) [0x8003087f]
-e: TestWeakRef#test_ref(+0x308de) [0x800308de]
-e: TestWeakRef#test_ref(+0x31760) [0x80031760]
-e: TestWeakRef#test_ref(+0x31899) [0x80031899]
-e: TestWeakRef#test_ref(+0x2be85) [0x8002be85]
-e: TestWeakRef#test_ref(rb_newobj_of+0x30) [0x8002bfed]
-e: TestWeakRef#test_ref(+0x15b592) [0x8015b592]
-e: TestWeakRef#test_ref(+0x15b68a) [0x8015b68a]
-e: TestWeakRef#test_ref(rb_ary_new_capa+0x29) [0x8015b6bf]
-e: TestWeakRef#test_ref(rb_ary_new_from_args+0x1d) [0x8015b6f6]
-e: TestWeakRef#test_ref(+0x2d3e6) [0x8002d3e6]
-e: TestWeakRef#test_ref(+0x2d595) [0x8002d595]
-e: TestWeakRef#test_ref(+0x2d5ce) [0x8002d5ce]
-e: TestWeakRef#test_ref(+0x2d664) [0x8002d664]
-e: TestWeakRef#test_ref(+0x2d6a5) [0x8002d6a5]
-e: TestWeakRef#test_ref(rb_postponed_job_flush+0xc9) [0x8014b99b]
-e: TestWeakRef#test_ref(+0x150063) [0x80150063]
-e: TestWeakRef#test_ref(+0x13c97c) [0x8013c97c]
-e: TestWeakRef#test_ref(+0x13c25c) [0x8013c25c]
-e: TestWeakRef#test_ref(+0x13cc19) [0x8013cc19]
-e: TestWeakRef#test_ref(+0x13d5c5) [0x8013d5c5]
-e: TestWeakRef#test_ref(rb_funcall+0x9f) [0x8013dd86]
-e: TestWeakRef#test_ref(rb_equal+0x43) [0x8006198d]
-e: TestWeakRef#test_ref(+0x1304d9) [0x801304d9]
-e: TestWeakRef#test_ref(+0x13c3db) [0x8013c3db]
-e: TestWeakRef#test_ref(+0x13c4aa) [0x8013c4aa]
-e: TestWeakRef#test_ref(+0x13c5f2) [0x8013c5f2]
-e: TestWeakRef#test_ref(+0x13c25c) [0x8013c25c]
-e: TestWeakRef#test_ref(+0x12f5e2) [0x8012f5e2]
-e: TestWeakRef#test_ref(+0x13473d) [0x8013473d]
-e: TestWeakRef#test_ref(+0x142760) [0x80142760]
-e: TestWeakRef#test_ref(+0x13c5d4) [0x8013c5d4]
-e: TestWeakRef#test_ref(+0x13c25c) [0x8013c25c]
-e: TestWeakRef#test_ref(+0x13cc19) [0x8013cc19]
-e: TestWeakRef#test_ref(+0x13d5c5) [0x8013d5c5]
-e: TestWeakRef#test_ref(rb_funcallv+0x2e) [0x8013ddc7]
-e: TestWeakRef#test_ref(rb_obj_call_init+0x64) [0x8001cae3]
-e: TestWeakRef#test_ref(rb_class_new_instance+0x39) [0x8006362f]
-e: TestWeakRef#test_ref(+0x1304aa) [0x801304aa]
-e: TestWeakRef#test_ref(+0x130eb1) [0x80130eb1]
-e: TestWeakRef#test_ref(+0x130f7e) [0x80130f7e]
-e: TestWeakRef#test_ref(+0x135036) [0x80135036]
-e: TestWeakRef#test_ref(+0x142760) [0x80142760]
-e: TestWeakRef#test_ref(+0x1412dc) [0x801412dc]
-e: TestWeakRef#test_ref(+0x141412) [0x80141412]
-e: TestWeakRef#test_ref(+0x13e072) [0x8013e072]
-e: TestWeakRef#test_ref(rb_yield+0x37) [0x8013e0ab]
-e: TestWeakRef#test_ref(+0x5fbb7) [0x8005fbb7]
-e: TestWeakRef#test_ref(+0x1304bd) [0x801304bd]
-e: TestWeakRef#test_ref(+0x130eb1) [0x80130eb1]
-e: TestWeakRef#test_ref(+0x130f7e) [0x80130f7e]
-e: TestWeakRef#test_ref(+0x134f4e) [0x80134f4e]
-e: TestWeakRef#test_ref(+0x142760) [0x80142760]
-e: TestWeakRef#test_ref(+0x1412dc) [0x801412dc]
-e: TestWeakRef#test_ref(+0x141412) [0x80141412]
-e: TestWeakRef#test_ref(+0x13e072) [0x8013e072]
-e: TestWeakRef#test_ref(rb_yield+0x37) [0x8013e0ab]
-e: TestWeakRef#test_ref(+0x1613b5) [0x801613b5]
-e: TestWeakRef#test_ref(+0x1304bd) [0x801304bd]
-e: TestWeakRef#test_ref(+0x130eb1) [0x80130eb1]
-e: TestWeakRef#test_ref(+0x130f7e) [0x80130f7e]
-e: TestWeakRef#test_ref(+0x134f4e) [0x80134f4e]
-e: TestWeakRef#test_ref(+0x142760) [0x80142760]
-e: TestWeakRef#test_ref(+0x1412dc) [0x801412dc]
-e: TestWeakRef#test_ref(+0x141412) [0x80141412]
-e: TestWeakRef#test_ref(+0x13e072) [0x8013e072]
-e: TestWeakRef#test_ref(rb_yield+0x37) [0x8013e0ab]
-e: TestWeakRef#test_ref(rb_ary_each+0x90) [0x8015f220]
-e: TestWeakRef#test_ref(+0x1304bd) [0x801304bd]
-e: TestWeakRef#test_ref(+0x130eb1) [0x80130eb1]
-e: TestWeakRef#test_ref(+0x130f7e) [0x80130f7e]
-e: TestWeakRef#test_ref(+0x131816) [0x80131816]
-e: TestWeakRef#test_ref(+0x131e44) [0x80131e44]
-e: TestWeakRef#test_ref(+0x134f4e) [0x80134f4e]
-e: TestWeakRef#test_ref(+0x142760) [0x80142760]
-e: TestWeakRef#test_ref(+0x1412dc) [0x801412dc]
-e: TestWeakRef#test_ref(+0x141412) [0x80141412]
-e: TestWeakRef#test_ref(+0x13e072) [0x8013e072]
-e: TestWeakRef#test_ref(rb_yield+0x37) [0x8013e0ab]
-e: TestWeakRef#test_ref(rb_ary_each+0x90) [0x8015f220]
-e: TestWeakRef#test_ref(+0x1304bd) [0x801304bd]
-e: TestWeakRef#test_ref(+0x130eb1) [0x80130eb1]
-e: TestWeakRef#test_ref(+0x130f7e) [0x80130f7e]
-e: TestWeakRef#test_ref(+0x131816) [0x80131816]
-e: TestWeakRef#test_ref(+0x131e44) [0x80131e44]
-e: TestWeakRef#test_ref(+0x134f4e) [0x80134f4e]
-e: TestWeakRef#test_ref(+0x142760) [0x80142760]
-e: TestWeakRef#test_ref(+0x1412dc) [0x801412dc]
-e: TestWeakRef#test_ref(+0x1414d4) [0x801414d4]
-e: TestWeakRef#test_ref(+0x141565) [0x80141565]
-e: TestWeakRef#test_ref(rb_proc_call+0x80) [0x8001e41c]
-e: TestWeakRef#test_ref(+0x1a046) [0x8001a046]
-e: TestWeakRef#test_ref(rb_exec_end_proc+0x185) [0x8001a310]
-e: TestWeakRef#test_ref(+0x1a5ff) [0x8001a5ff]
-e: TestWeakRef#test_ref(ruby_cleanup+0x158) [0x8001a7a8]
-e: TestWeakRef#test_ref(ruby_run_node+0x40) [0x8001ab1c]
-e: TestWeakRef#test_ref(+0x1924a) [0x8001924a]
/lib/i686/nosegneg/libc.so.6(__libc_start_main+0xe6) [0xb7d28ca6] libc-start.c:228
-e: TestWeakRef#test_ref(+0x19101) [0x80019101]

-- Other runtime information -----------------------------------------------

  • Loaded script: -e: TestWeakRef#test_ref

  • Loaded features:

    0 enumerator.so
    1 /home/akr/tst1/lib/ruby/2.1.0/i686-linux/enc/encdb.so
    2 /home/akr/tst1/lib/ruby/2.1.0/i686-linux/enc/trans/transdb.so
    3 /home/akr/tst1/lib/ruby/2.1.0/i686-linux/rbconfig.rb
    4 /home/akr/tst1/lib/ruby/2.1.0/rubygems/compatibility.rb
    5 /home/akr/tst1/lib/ruby/2.1.0/rubygems/defaults.rb
    6 /home/akr/tst1/lib/ruby/2.1.0/rubygems/deprecate.rb
    7 /home/akr/tst1/lib/ruby/2.1.0/rubygems/errors.rb
    8 /home/akr/tst1/lib/ruby/2.1.0/rubygems/version.rb
    9 /home/akr/tst1/lib/ruby/2.1.0/rubygems/requirement.rb
    10 /home/akr/tst1/lib/ruby/2.1.0/rubygems/platform.rb
    11 /home/akr/tst1/lib/ruby/2.1.0/rubygems/basic_specification.rb
    12 /home/akr/tst1/lib/ruby/2.1.0/rubygems/stub_specification.rb
    13 /home/akr/tst1/lib/ruby/2.1.0/rubygems/specification.rb
    14 /home/akr/tst1/lib/ruby/2.1.0/rubygems/exceptions.rb
    15 /home/akr/tst1/lib/ruby/2.1.0/rubygems/core_ext/kernel_gem.rb
    16 /home/akr/tst1/lib/ruby/2.1.0/thread.rb
    17 /home/akr/tst1/lib/ruby/2.1.0/monitor.rb
    18 /home/akr/tst1/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb
    19 /home/akr/tst1/lib/ruby/2.1.0/rubygems.rb
    20 /home/akr/tst1/lib/ruby/2.1.0/rubygems/dependency.rb
    21 /home/akr/tst1/lib/ruby/2.1.0/rubygems/path_support.rb
    22 /home/akr/tst1/lib/ruby/2.1.0/optparse.rb
    23 /home/akr/tst1/lib/ruby/2.1.0/minitest/unit.rb
    24 /home/akr/tst1/lib/ruby/2.1.0/prettyprint.rb
    25 /home/akr/tst1/lib/ruby/2.1.0/pp.rb
    26 /home/akr/tst1/lib/ruby/2.1.0/test/unit/assertions.rb
    27 /home/akr/tst1/lib/ruby/2.1.0/test/unit/testcase.rb
    28 /home/akr/tst1/lib/ruby/2.1.0/test/unit.rb
    29 /home/akr/tst1/lib/ruby/2.1.0/delegate.rb
    30 /home/akr/tst1/lib/ruby/2.1.0/weakref.rb
    31 /home/akr/tst1/lib/ruby/2.1.0/open3.rb
    32 /home/akr/tst1/lib/ruby/2.1.0/timeout.rb
    33 /home/akr/tst1/ruby/test/ruby/envutil.rb
    34 /home/akr/tst1/lib/ruby/2.1.0/i686-linux/io/console.so

  • Process memory map:

80000000-80225000 r-xp 00000000 ca:03 319808 /home/akr/tst1/ruby/ruby
80225000-80229000 rw-p 00225000 ca:03 319808 /home/akr/tst1/ruby/ruby
80229000-80594000 rw-p 80229000 00:00 0 [heap]
b7c60000-b7c7d000 r-xp 00000000 ca:02 278530 /lib/libgcc_s.so.1
b7c7d000-b7c7e000 rw-p 0001c000 ca:02 278530 /lib/libgcc_s.so.1
b7c8b000-b7c8e000 r-xp 00000000 ca:03 468021 /home/akr/tst1/lib/ruby/2.1.0/i686-linux/io/console.so
b7c8e000-b7c8f000 rw-p 00002000 ca:03 468021 /home/akr/tst1/lib/ruby/2.1.0/i686-linux/io/console.so
b7c8f000-b7d12000 rw-p b7c8f000 00:00 0
b7d12000-b7e55000 r-xp 00000000 ca:02 83914 /lib/i686/nosegneg/libc-2.11.3.so
b7e55000-b7e57000 r--p 00143000 ca:02 83914 /lib/i686/nosegneg/libc-2.11.3.so
b7e57000-b7e58000 rw-p 00145000 ca:02 83914 /lib/i686/nosegneg/libc-2.11.3.so
b7e58000-b7e5b000 rw-p b7e58000 00:00 0
b7e5b000-b7e7f000 r-xp 00000000 ca:02 83026 /lib/i686/nosegneg/libm-2.11.3.so
b7e7f000-b7e80000 r--p 00023000 ca:02 83026 /lib/i686/nosegneg/libm-2.11.3.so
b7e80000-b7e81000 rw-p 00024000 ca:02 83026 /lib/i686/nosegneg/libm-2.11.3.so
b7e81000-b7e8a000 r-xp 00000000 ca:02 83251 /lib/i686/nosegneg/libcrypt-2.11.3.so
b7e8a000-b7e8b000 r--p 00008000 ca:02 83251 /lib/i686/nosegneg/libcrypt-2.11.3.so
b7e8b000-b7e8c000 rw-p 00009000 ca:02 83251 /lib/i686/nosegneg/libcrypt-2.11.3.so
b7e8c000-b7eb3000 rw-p b7e8c000 00:00 0
b7eb3000-b7eb5000 r-xp 00000000 ca:02 83024 /lib/i686/nosegneg/libdl-2.11.3.so
b7eb5000-b7eb6000 r--p 00001000 ca:02 83024 /lib/i686/nosegneg/libdl-2.11.3.so
b7eb6000-b7eb7000 rw-p 00002000 ca:02 83024 /lib/i686/nosegneg/libdl-2.11.3.so
b7eb7000-b7eb8000 rw-p b7eb7000 00:00 0
b7eb8000-b7f15000 r-xp 00000000 ca:02 170351 /usr/lib/libgmp.so.3.5.2
b7f15000-b7f16000 rw-p 0005d000 ca:02 170351 /usr/lib/libgmp.so.3.5.2
b7f16000-b7f1d000 r-xp 00000000 ca:02 83913 /lib/i686/nosegneg/librt-2.11.3.so
b7f1d000-b7f1e000 r--p 00006000 ca:02 83913 /lib/i686/nosegneg/librt-2.11.3.so
b7f1e000-b7f1f000 rw-p 00007000 ca:02 83913 /lib/i686/nosegneg/librt-2.11.3.so
b7f1f000-b7f34000 r-xp 00000000 ca:02 83903 /lib/i686/nosegneg/libpthread-2.11.3.so
b7f34000-b7f35000 r--p 00014000 ca:02 83903 /lib/i686/nosegneg/libpthread-2.11.3.so
b7f35000-b7f36000 rw-p 00015000 ca:02 83903 /lib/i686/nosegneg/libpthread-2.11.3.so
b7f36000-b7f38000 rw-p b7f36000 00:00 0
b7f39000-b7f3a000 rw-p b7f39000 00:00 0
b7f3a000-b7f3d000 r-xp 00000000 ca:03 467993 /home/akr/tst1/lib/ruby/2.1.0/i686-linux/enc/trans/transdb.so
b7f3d000-b7f3e000 rw-p 00002000 ca:03 467993 /home/akr/tst1/lib/ruby/2.1.0/i686-linux/enc/trans/transdb.so
b7f3e000-b7f40000 r-xp 00000000 ca:03 467962 /home/akr/tst1/lib/ruby/2.1.0/i686-linux/enc/encdb.so
b7f40000-b7f41000 rw-p 00001000 ca:03 467962 /home/akr/tst1/lib/ruby/2.1.0/i686-linux/enc/encdb.so
b7f41000-b7f42000 ---p b7f41000 00:00 0
b7f42000-b7f49000 rw-p b7f42000 00:00 0
b7f49000-b7f4a000 r-xp b7f49000 00:00 0 [vdso]
b7f4a000-b7f65000 r-xp 00000000 ca:02 278816 /lib/ld-2.11.3.so
b7f65000-b7f66000 r--p 0001b000 ca:02 278816 /lib/ld-2.11.3.so
b7f66000-b7f67000 rw-p 0001c000 ca:02 278816 /lib/ld-2.11.3.so
bfd9e000-bfdb4000 rw-p bfd9e000 00:00 0 [stack]

[NOTE]
You may have encountered a bug in the Ruby interpreter or extension libraries.
Bug reports are welcome.
For details: http://www.ruby-lang.org/bugreport.html

zsh: abort ./ruby -e 'GC.stress = true; load("test/test_weakref.rb")'

Actions #3

Updated by nobu (Nobuyoshi Nakada) over 10 years ago

  • Status changed from Open to Closed

This issue was solved with changeset r43509.
Akira, thank you for reporting this issue.
Your contribution to Ruby is greatly appreciated.
May Ruby be with you.


gc.c: mark live objects only

Actions

Also available in: Atom PDF

Like0
Like0Like0Like0