鄭です。

Yukihiro Matsumoto writes:
 > |こんにちは、鄭です。
 > |Sun Solaris 2.5.1 + gcc 2.7.2.3 + ruby 1.1c3 で、Hash の sort をしたら
 > |エラーが出てしまい、場合によってはコアダンプしてしまいました。
 > 
 > 試してみました.が,linuxではなんの問題もなく動作するようで
 > す.謎ですね.で,思い出したのが昔SunOSのqsortでは比較関数の
 > 値の与え方によってはcore dumpしたことです.その時は純粋に
 > Rubyのバグでしたが,今回は比較ルーチン返す値の問題なのかも知
 > れません.SolarisもSunOSのqsortの挙動を継承しているのかも知
 > れません.
 > 
 > んで,もともとはqsortを独自のものに置き換えることを構想して
 > いるのですが,それで試してみるってのはどうでしょう.
 > 
 > 以下のものを検討してます.
 > 
 >   http://www.tokuyama.ac.jp/home/~kawamura/
 > 
 > どうでしょう.これとqsortを置き換えてみるってのは?

qs6.c で試して見ました。
エラーやコアダンプ無しで一見正常そうに終了しました、、、と思ったら
結果がおかしい、、よく見たら私のスクリプトの比較の式が間違っていました。^^;;;

  PTABLE.sort{|a,b|
    (b[1].pos+b[1].width) - (a[1].pos+a[1].width)
  }
とすべき所を、まちがって
  PTABLE.sort{|a,b|
    b[1].pos+b[1].width - a[1].pos+a[1].width
  }
としていました。

コアダンプするのでてっきり ruby のせいかと思ってしまいました。
ごめんなさい。_o_

# それにしても、矛盾する比較結果をあたえられると、呼出元までまきこんで
# core dump させてしまう、Sun の qsort って、、、、^^;

-- 
                         ┌─鄭  明毅───────────────────┐
                         └──tei / harmony.co.jp──tei@mirage.linc.or.jp─┘