2009/7/29 Hidetoshi NAGAI <nagai / ai.kyutech.ac.jp>:
> 永井@知能.九工大です.
>
> ちょっと恥ずかしい話ですが,似たような状況でトラブルに合う方も
> いらっしゃるかもしれないので書いておきます.(^_^;
>
> ruby 1.8 で動いていたスクリプトを 1.9 で動かそうとした際の話です.
> OS にも依存する話ですので述べておきますと,Linux 2.6.12, gcc 3.3.2 です.

問題の起こる条件について、補足。

この問題は最近の Linux では起こりません。ちょっと古めの Linux を使っている
ときに起こる問題です。具体的にはスレッドライブラリとして LinuxThreads が使
用されている場合です。
以下の URL の「POSIX スレッドの Linux での実装」を参照してください。

  http://www.linux.or.jp/JM/html/LDP_man-pages/man7/pthreads.7.html

この URL によると問題の起こる条件を以下のように場合分けできます。
  glibc 2.4 以降
    --> NPTL  (LinuxThreads はサポート外)、すなわち問題なし。
  glibc 2.3.2以降、glibc 2.4より前
    --> カーネルのバージョンと設定によって、NPTL だったり、LinuxThreads だったり。
          getconf GNU_LIBPTHREAD_VERSION
        を実行して NPTL, LinuxThreads のどちらなのか確認するのが早道でしょう。
  glibc 2.3.1以前
    --> LinuxThreads、問題あり。

参照元のURL には「NPTL を利用するには Linux 2.6 カーネルに実装されている
機能が必要」と書いてあるが、これは素のカーネルの場合の話で、ディストリビューショ
ンによっては Linux 2.4 カーネルでも NPTL が使用可能になっている場合があります。
例えば Redhat Enterprise Linux ES/AS Release 3 の Linux カーネルは 2.4 ですが
NPTL に対応しています。