[ruby-dev:24314] Re: Array#sort! dumps core

From: Yukihiro Matsumoto <matz@...>
Date: 2004-09-23 02:34:51 UTC
List: ruby-dev #24314
まつもと ゆきひろです

In message "Re: [ruby-dev:24311] Array#sort! dumps core"
    on Wed, 22 Sep 2004 22:03:57 +0900, Tanaka Akira <akr@m17n.org> writes:

|次のようにすると core を吐きます。
|
|% ./ruby -e '
|Thread.new { sleep 1; kill 0, :INT }
|arr = (1..100).map {|i| [i] }
|class << arr[20]; self end.send(:define_method, :<=>) {|o|
|  r = Object.new
|  class << r; self; end.send(:define_method, :>) {|zero|
|    callcc {|k| $k = k }
|    throw :tag
|    arr.clear; arr.compact!
|  }
|  r
|}
|catch(:tag) {
|  arr.sort!
|}
|$k.call
|'
|-e:2: [BUG] Segmentation fault
|ruby 1.8.2 (2004-09-22) [i686-linux]

これは難問ですね。arr.clearの行が無くても落ちますから、配列
の大きさの変化の問題ではありませんね。デバッガで追いかけたと
ころfreelistが壊れていて、自己参照してます。なんでだろう。

ちょっと時間がかかりそうです。

In This Thread