Project

General

Profile

Bug #1837

Test failure (test_block.rb) in Ruby 1.9.2 preview1 on FreeBSD 6.0

Added by gimite (Hiroshi Ichikawa) about 11 years ago. Updated over 9 years ago.

Status:
Closed
Priority:
Normal
Assignee:
-
Target version:
ruby -v:
ruby 1.9.2dev (2009-07-18 trunk 24186) [i386-freebsd6.0]
Backport:
[ruby-dev:38961]

Description

=begin

まず、この手の明白なバグはRedmineに入れていただいた方が忘れられづらいです。

了解しました。ということで改めて。

さて、この問題ですが現在の最新はr24311とかですが、これでも再現しますか?
とりあえず、1.9.2dev (2009-07-29 trunk 24311) [x86_64-freebsd7.2]では再現しません。

r24321で再現しました。FreeBSD6特有なのか、32bit特有なのか、でしょうか…。

(以下一度メールで送ったもののコピペ)

FreeBSD 6.0上でRuby 1.9.2 preview1のmake testを実行すると、test_block.rbで失敗します。

$ ./ruby --version
ruby 1.9.2dev (2009-07-18 trunk 24186) [i386-freebsd6.0]
$ make install && make test
...snip...
#60 test_block.rb:464:in `':
e = [1,2,3].each
10000.times {
e = [e].each
}
Thread.new { GC.start }.join
#=> killed by SIGILL (signal 4) [ruby-dev:32604]
FAIL 1/938 tests failed
*** Error code 1

trunkのリビジョンを2分探索したところ、リビジョン
24085からこのエラーが出始めている(24084では起きない)ようです。GCまわりの変更のようですが、中身がよく分からず、これ以上の深追いはできていません…。とりあえず、ご報告まで。


r24085 | ko1 | 2009-07-13 18:30:23 +0900 (月, 13 7 2009) | 10 lines

  • vm_core.h, compile.c: declare struct iseq_inline_cache_entry. Inline cache (IC) entries are no longer GC managed object. IC entries are freed when ISeq is freed.
  • iseq.c: fix mark, free, memsize functions for above change.
  • insns.def: remove rb_gc_write_barrier().
  • vm_insnhelper.c (vm_method_search): ditto.
  • tool/instruction.rb, template/insns_info.inc.tmpl (insn_iclen): added. ------------------------------------------------------------------------

GDBでスタックトレースを出力すると、以下のようなものが延々と続いています。

#0 0x0806010b in gc_mark_children (objspace=Cannot access memory at
address 0xbf9fffec
) at gc.c:1589
#1 0x080615e8 in gc_mark_children (objspace=0x81ce520, ptr=136882532, lev=1)
at gc.c:1578
#2 0x0817d9b5 in enumerator_mark (p=0x8362ee0) at enumerator.c:58
#3 0x080606e8 in gc_mark_children (objspace=0x81ce520, ptr=136882500, lev=2)
at gc.c:1786
#4 0x080615e8 in gc_mark_children (objspace=0x81ce520, ptr=136882492, lev=1)
at gc.c:1578
#5 0x0817d9b5 in enumerator_mark (p=0x8362f00) at enumerator.c:58
#6 0x080606e8 in gc_mark_children (objspace=0x81ce520, ptr=136882460, lev=2)
at gc.c:1786
#7 0x080615e8 in gc_mark_children (objspace=0x81ce520, ptr=136882452, lev=1)
at gc.c:1578
#8 0x0817d9b5 in enumerator_mark (p=0x8362f20) at enumerator.c:58
#9 0x080606e8 in gc_mark_children (objspace=0x81ce520, ptr=136882420, lev=2)
at gc.c:1786
#10 0x080615e8 in gc_mark_children (objspace=0x81ce520, ptr=136882412, lev=1)
at gc.c:1578
#11 0x0817d9b5 in enumerator_mark (p=0x8362f40) at enumerator.c:58
#12 0x080606e8 in gc_mark_children (objspace=0x81ce520, ptr=136882380, lev=2)
at gc.c:1786
#13 0x080615e8 in gc_mark_children (objspace=0x81ce520, ptr=136882372, lev=1)
at gc.c:1578
=end

#1

Updated by naruse (Yui NARUSE) about 11 years ago

=begin
これ、今でも症状出ますか?
なお、うちの FreeBSD 7.2-STABLE amd64 では発生しません。
=end

#2

Updated by naruse (Yui NARUSE) about 11 years ago

  • Status changed from Open to Closed

=begin
直ったと見なします
=end

Also available in: Atom PDF