[ruby-dev:31812] Re: rb_obj_is_kind_of

From: Tanaka Akira <akr@...>
Date: 2007-09-22 01:30:57 UTC
List: ruby-dev #31812
In article <20070922001951.9861AE0454@mail.bc9.jp>,
  Nobuyoshi Nakada <nobu@ruby-lang.org> writes:

> finalizer待ちのようですね。

パッチを当ててみましたが、まだ出ます。

今度も T_NONE のようです。

% gdb ruby       
GNU gdb 6.3-debian
Copyright 2004 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "i386-linux"...Using host libthread_db library "/lib/tls/libthread_db.so.1".

(gdb) run test/runner.rb
Starting program: /tmp/a/ruby/ruby test/runner.rb
[Thread debugging using libthread_db enabled]
[New Thread -1209809824 (LWP 19486)]
[New Thread -1210541136 (LWP 19489)]
Skipping permutation tests.
[New Thread -1221895248 (LWP 19490)]
Loaded suite .
Started
...........................................F...........................................................................................................................rb: object.c:394: rb_obj_is_kind_of: Assertion `rb_type((VALUE)(cl)) == RUBY_T_CLASS || rb_type((VALUE)(cl)) == RUBY_T_ICLASS' failed.

Program received signal SIGABRT, Aborted.
[Switching to Thread -1209809824 (LWP 19486)]
0xb7e6583b in raise () from /lib/tls/libc.so.6
(gdb) up
#1  0xb7e66fa2 in abort () from /lib/tls/libc.so.6
(gdb) 
#2  0xb7e5f2df in __assert_fail () from /lib/tls/libc.so.6
(gdb) 
#3  0x0807766d in rb_obj_is_kind_of (obj=0, c=3076569300) at ruby.h:897
897             if (obj == Qfalse) return rb_cFalseClass;
(gdb) 
#4  0x0806323b in os_obj_of (of=3076569300) at gc.c:1747
1747                        if (rb_obj_is_kind_of((VALUE)p, of)) {
(gdb) rp p
T_NONE: $1 = (struct RBasic *) 0xb784e394
(gdb) p *$1
$2 = {flags = 32, klass = 3078790120}
(gdb) rp 3078790120
T_NONE: $3 = (struct RBasic *) 0xb7829be8
(gdb) bt
#0  0xb7e6583b in raise () from /lib/tls/libc.so.6
#1  0xb7e66fa2 in abort () from /lib/tls/libc.so.6
#2  0xb7e5f2df in __assert_fail () from /lib/tls/libc.so.6
#3  0x0807766d in rb_obj_is_kind_of (obj=0, c=3076569300) at ruby.h:897
#4  0x0806323b in os_obj_of (of=3076569300) at gc.c:1747
#5  0x080632dc in os_each_obj (argc=0, argv=0x0) at gc.c:1802
#6  0x080d96fa in call_cfunc (func=0x8063290 <os_each_obj>, recv=3084502740, len=6, argc=19486, argv=0xb7dbb158)
    at insnhelper.ci:276
#7  0x080dac35 in vm_call_cfunc (th=0x815d160, reg_cfp=0xb7e3ab00, num=1, id=8080, recv=3084502740, klass=3084502640, 
    mn=0xb7d9c65c, blockptr=0x0) at insnhelper.ci:365
#8  0x080d9e26 in vm_call_method (th=0x815d160, cfp=0xb7e3ab00, num=1, blockptr=0xb7e3ab14, flag=0, id=8080, mn=0x815d160, 
    recv=3084502740, klass=3084502640) at insnhelper.ci:490
#9  0x080d5380 in vm_eval (th=0x815d160, initial=0) at insns.def:1073
#10 0x080d84d0 in vm_eval_body (th=0x815d160) at vm.c:1162
#11 0x080d3643 in invoke_block (th=0x815d160, block=0xb7e3ac2c, self=0, argc=-1209816020, argv=0xbfcd6c30) at vm.c:582
#12 0x080d3726 in vm_yield (th=0x4c1e, argc=0, argv=0x0) at vm.c:604
#13 0x0805b451 in rb_yield_0 (argc=0, argv=0x0) at eval.c:904
#14 0x0805b484 in rb_yield (val=3076549360) at eval.c:915
#15 0x080e2e3f in each_i (ary=3076555000) at array.c:1143
#16 0x0805bc89 in rb_ensure (b_proc=0x80e2e10 <each_i>, data1=3076555000, e_proc=0x80e2dd0 <each_unlock>, data2=3076555000)
    at eval.c:1189
#17 0x080e2ead in rb_ary_each (ary=3076555000) at array.c:1167
#18 0x080d9701 in call_cfunc (func=0x80e2e50 <rb_ary_each>, recv=3076555000, len=6, argc=19486, argv=0xb7dbb11c)
    at insnhelper.ci:279
#19 0x080dac35 in vm_call_cfunc (th=0x815d160, reg_cfp=0xb7e3ac18, num=0, id=392, recv=3076555000, klass=3084571120, 
    mn=0xb7dacac0, blockptr=0x0) at insnhelper.ci:365
#20 0x080d9e26 in vm_call_method (th=0x815d160, cfp=0xb7e3ac18, num=0, blockptr=0xb7e3ac2c, flag=0, id=392, mn=0x815d160, 
    recv=3076555000, klass=3084571120) at insnhelper.ci:490
#21 0x080d5380 in vm_eval (th=0x815d160, initial=0) at insns.def:1073
#22 0x080d84d0 in vm_eval_body (th=0x815d160) at vm.c:1162
#23 0x080d3643 in invoke_block (th=0x815d160, block=0xb7e3ad0c, self=0, argc=-1209815796, argv=0xbfcd7230) at vm.c:582
#24 0x080d3726 in vm_yield (th=0x4c1e, argc=0, argv=0x0) at vm.c:604
#25 0x0805b451 in rb_yield_0 (argc=0, argv=0x0) at eval.c:904
#26 0x0805b484 in rb_yield (val=3076555020) at eval.c:915
#27 0x080e2e3f in each_i (ary=3076547940) at array.c:1143
#28 0x0805bc89 in rb_ensure (b_proc=0x80e2e10 <each_i>, data1=3076547940, e_proc=0x80e2dd0 <each_unlock>, data2=3076547940)
    at eval.c:1189
#29 0x080e2ead in rb_ary_each (ary=3076547940) at array.c:1167
#30 0x080d9701 in call_cfunc (func=0x80e2e50 <rb_ary_each>, recv=3076547940, len=6, argc=19486, argv=0xb7dbb0ec)
    at insnhelper.ci:279
---Type <return> to continue, or q <return> to quit---
#31 0x080dac35 in vm_call_cfunc (th=0x815d160, reg_cfp=0xb7e3acf8, num=0, id=392, recv=3076547940, klass=3084571120, 
    mn=0xb7dacac0, blockptr=0x0) at insnhelper.ci:365
#32 0x080d9e26 in vm_call_method (th=0x815d160, cfp=0xb7e3acf8, num=0, blockptr=0xb7e3ad0c, flag=0, id=392, mn=0x815d160, 
    recv=3076547940, klass=3084571120) at insnhelper.ci:490
#33 0x080d5380 in vm_eval (th=0x815d160, initial=0) at insns.def:1073
#34 0x080d84d0 in vm_eval_body (th=0x815d160) at vm.c:1162
#35 0x080d3643 in invoke_block (th=0x815d160, block=0xb7e3adec, self=0, argc=-1209815572, argv=0xbfcd7830) at vm.c:582
#36 0x080d3726 in vm_yield (th=0x4c1e, argc=0, argv=0x0) at vm.c:604
#37 0x0805b451 in rb_yield_0 (argc=0, argv=0x0) at eval.c:904
#38 0x0805b484 in rb_yield (val=3076547960) at eval.c:915
#39 0x080e2e3f in each_i (ary=3073926760) at array.c:1143
#40 0x0805bc89 in rb_ensure (b_proc=0x80e2e10 <each_i>, data1=3073926760, e_proc=0x80e2dd0 <each_unlock>, data2=3073926760)
    at eval.c:1189
#41 0x080e2ead in rb_ary_each (ary=3073926760) at array.c:1167
#42 0x080d9701 in call_cfunc (func=0x80e2e50 <rb_ary_each>, recv=3073926760, len=6, argc=19486, argv=0xb7dbb0bc)
    at insnhelper.ci:279
#43 0x080dac35 in vm_call_cfunc (th=0x815d160, reg_cfp=0xb7e3add8, num=0, id=392, recv=3073926760, klass=3084571120, 
    mn=0xb7dacac0, blockptr=0x0) at insnhelper.ci:365
#44 0x080d9e26 in vm_call_method (th=0x815d160, cfp=0xb7e3add8, num=0, blockptr=0xb7e3adec, flag=0, id=392, mn=0x815d160, 
    recv=3073926760, klass=3084571120) at insnhelper.ci:490
#45 0x080d5380 in vm_eval (th=0x815d160, initial=0) at insns.def:1073
#46 0x080d84d0 in vm_eval_body (th=0x815d160) at vm.c:1162
#47 0x080d889a in rb_iseq_eval (iseqval=3084487860) at vm.c:1371
#48 0x0805a589 in ruby_exec_node (n=0xb7d98cf0, file=0x8195bd1 "test/runner.rb") at eval.c:231
#49 0x0805a5ef in ruby_run_node (n=0xb7d98cf0) at eval.c:256
#50 0x08057757 in main (argc=0, argv=0x0, envp=0xbfcd7f70) at main.c:46
(gdb) 
-- 
[田中 哲][たなか あきら][Tanaka Akira]

In This Thread