ruby-dev

Mailing list archive

[ruby-dev:49731] [Ruby trunk Bug#12583] Class#instance_methods dumps core

From: shyouhei@...
Date: 2016-07-13 05:33:11 UTC
List: ruby-dev #49731
Issue #12583 has been reported by Shyouhei Urabe.

----------------------------------------
Bug #12583: Class#instance_methods dumps core
https://bugs.ruby-lang.org/issues/12583

* Author: Shyouhei Urabe
* Status: Open
* Priority: Normal
* Assignee:=20
* ruby -v: ruby 2.4.0dev (2016-07-13 trunk 55653) [x86_64-darwin15]
* Backport: 2.1: UNKNOWN, 2.2: UNKNOWN, 2.3: UNKNOWN
----------------------------------------
=E6=AC=A1=E3=81=AE=E3=82=88=E3=81=86=E3=81=AB=E3=81=99=E3=82=8B=E3=81=A8 co=
re =E3=82=92=E5=90=90=E3=81=8D=E3=81=BE=E3=81=99=E3=80=82

```
% cat tmp.rb
ObjectSpace.each_object{|o|o.singleton_class rescue 0}
ObjectSpace.each_object{|o|case o when Module then o.instance_methods end}

% lldb -- ruby -v tmp.rb
(lldb) target create "/Users/urabe.shyouhei/data/etc/rbenv/versions/trunk@s=
vn/bin/ruby"
Current executable set to '/Users/urabe.shyouhei/.rbenv/versions/trunk@svn/=
bin/ruby' (x86_64).
(lldb) settings set -- target.run-args  "-v" "tmp.rb"
(lldb) run
Process 96798 launched: '/Users/urabe.shyouhei/.rbenv/versions/trunk@svn/bi=
n/ruby' (x86_64)
ruby 2.4.0dev (2016-07-13 trunk 55653) [x86_64-darwin15]
Process 96798 stopped
* thread #1: tid =3D 0x4bbb9, 0x0000000100178d45 ruby`rb_id_table_foreach [=
inlined] rb_id_serial_to_id at symbol.c:361, queue =3D 'com.apple.main-thre=
ad', stop reason =3D EXC_BAD_ACCESS (code=3D1, address=3D0x4d55545a)
    frame #0: 0x0000000100178d45 ruby`rb_id_table_foreach [inlined] rb_id_s=
erial_to_id at symbol.c:361
   358  #endif
   359  rb_id_serial_to_id(rb_id_serial_t num)
   360  {
-> 361      if (is_notop_id((ID)num)) {
   362          VALUE sym =3D get_id_entry(num, ID_ENTRY_SYM);
   363          return SYM2ID(sym);
   364      }
(lldb) bt
* thread #1: tid =3D 0x4bbb9, 0x0000000100178d45 ruby`rb_id_table_foreach [=
inlined] rb_id_serial_to_id at symbol.c:361, queue =3D 'com.apple.main-thre=
ad', stop reason =3D EXC_BAD_ACCESS (code=3D1, address=3D0x4d55545a)
  * frame #0: 0x0000000100178d45 ruby`rb_id_table_foreach [inlined] rb_id_s=
erial_to_id at symbol.c:361
    frame #1: 0x0000000100178d45 ruby`rb_id_table_foreach [inlined] key2id =
at id_table.c:216
    frame #2: 0x0000000100178d45 ruby`rb_id_table_foreach + 27 at id_table.=
c:1396
    frame #3: 0x0000000100178d2a ruby`rb_id_table_foreach [inlined] mix_id_=
table_foreach + 718 at id_table.c:1539
    frame #4: 0x0000000100178a5c ruby`rb_id_table_foreach(tbl=3D<unavailabl=
e>, func=3D(ruby`method_entry_i at class.c:1148), data=3D0x00007fff5fbfdce8=
) + 28 at id_table.c:1574
    frame #5: 0x000000010002f384 ruby`class_instance_method_list(argc=3D<un=
available>, argv=3D<unavailable>, mod=3D4317777480, obj=3D<unavailable>, fu=
nc=3D<unavailable>) + 468 at class.c:1195
    frame #6: 0x00000001001bf0a0 ruby`vm_call_cfunc [inlined] vm_call_cfunc=
_with_frame + 190 at vm_insnhelper.c:1641
    frame #7: 0x00000001001befe2 ruby`vm_call_cfunc(th=3D<unavailable>, reg=
_cfp=3D<unavailable>, calling=3D<unavailable>, ci=3D<unavailable>, cc=3D<un=
available>) + 66 at vm_insnhelper.c:1736
    frame #8: 0x00000001001a9016 ruby`vm_exec_core(th=3D<unavailable>, init=
ial=3D<unavailable>) + 12534 at insns.def:1064
    frame #9: 0x00000001001b94dd ruby`vm_exec(th=3D<unavailable>) + 125 at =
vm.c:1653
    frame #10: 0x00000001001b4887 ruby`rb_yield [inlined] invoke_block_from=
_c_splattable(th=3D<unavailable>, block=3D<unavailable>, self=3D<unavailabl=
e>, argc=3D0, argv=3D<unavailable>, blockptr=3D<unavailable>, cref=3D<unava=
ilable>) + 183 at vm.c:990
    frame #11: 0x00000001001b487f ruby`rb_yield [inlined] vm_yield(th=3D<un=
available>, argc=3D0) at vm.c:1025
    frame #12: 0x00000001001b487f ruby`rb_yield [inlined] rb_yield_0(argc=
=3D0) at vm_eval.c:1019
    frame #13: 0x00000001001b487f ruby`rb_yield(val=3D<unavailable>) + 175 =
at vm_eval.c:1032
    frame #14: 0x000000010008dd48 ruby`os_obj_of_i(vstart=3D<unavailable>, =
vend=3D<unavailable>, stride=3D<unavailable>, data=3D<unavailable>) + 168 a=
t gc.c:2490
    frame #15: 0x000000010007f9b3 ruby`objspace_each_objects(arg=3D<unavail=
able>) + 195 at gc.c:2358
    frame #16: 0x00000001000726b6 ruby`rb_ensure(b_proc=3D(ruby`objspace_ea=
ch_objects at gc.c:2340), data1=3D140734799799296, e_proc=3D<unavailable>, =
data2=3D<unavailable>) + 166 at eval.c:900
    frame #17: 0x000000010007f72a ruby`rb_objspace_each_objects(callback=3D=
<unavailable>, data=3D<unavailable>) + 266 at gc.c:2428
    frame #18: 0x0000000100087eb7 ruby`os_each_obj [inlined] os_obj_of(of=
=3D<unavailable>) + 28 at gc.c:2506
    frame #19: 0x0000000100087e9b ruby`os_each_obj(argc=3D<unavailable>, ar=
gv=3D<unavailable>, os=3D4317810480) + 43 at gc.c:2558
    frame #20: 0x00000001001bf0a0 ruby`vm_call_cfunc [inlined] vm_call_cfun=
c_with_frame + 190 at vm_insnhelper.c:1641
    frame #21: 0x00000001001befe2 ruby`vm_call_cfunc(th=3D<unavailable>, re=
g_cfp=3D<unavailable>, calling=3D<unavailable>, ci=3D<unavailable>, cc=3D<u=
navailable>) + 66 at vm_insnhelper.c:1736
    frame #22: 0x00000001001a889f ruby`vm_exec_core(th=3D<unavailable>, ini=
tial=3D<unavailable>) + 10623 at insns.def:965
    frame #23: 0x00000001001b94dd ruby`vm_exec(th=3D<unavailable>) + 125 at=
 vm.c:1653
    frame #24: 0x0000000100071690 ruby`ruby_exec_internal(n=3D0x00000001018=
578c8) + 144 at eval.c:244
    frame #25: 0x00000001000715a6 ruby`ruby_run_node [inlined] ruby_exec_no=
de(n=3D<unavailable>) + 54 at eval.c:308
    frame #26: 0x0000000100071598 ruby`ruby_run_node(n=3D<unavailable>) + 4=
0 at eval.c:300
    frame #27: 0x00000001000013b3 ruby`main(argc=3D<unavailable>, argv=3D<u=
navailable>) + 99 at main.c:36
    frame #28: 0x00007fff8f0be5ad libdyld.dylib`start + 1
(lldb)
```



--=20
https://bugs.ruby-lang.org/

In This Thread

Prev Next