Redhat Enterprise Linux/3/thread のバックアップ(No.2)


Redhat Enterprise Linux 3

Red Hat Enterprise Linux 3 には、Linux用の新しいPOSIXスレッド実装の
Native POSIXスレッドライブラリ(Native POSIX Thread Library - NPTL)が含まれます。
このライブラリはパフォーマンスの改善とスケーラビリティの向上を提供します。

このスレッドライブラリは古いLinuxThreads実装とバイナリ互換を持てる様デザインされています。
但し、LinuxThreads実装が POSIX基準から離脱する部分に依存するアプリケーションには修正が必要です。
注意に値する差異には次のような項目があります:

  • 信号処理は、スレッド単位信号処理からPOSIXプロセス信号処理へと変更されています。
  • getpid()は全てのスレッド内で同じ値を返送します。
  • pthread_atforkに登録されているスレッド処理は、vfork()を使用中なら実行されません。
  • マネージャスレッドがありません。


NPTLで問題がある既知のアプリケーションは次を含みます:

  • Sun JRE バージョン1.4.1以前のもの
  • IBM JRE


アプリケーションがNPTLで正常に動作しない場合は、次の環境変数を設定することにより、
古いLinuxThreads実装を使用して動作できるようになります。

LD_ASSUME_KERNEL=<kernel-version>

以下のバージョンが利用可能です。

  • 2.4.19 ? フローティングスタックを持つ Linuxthreads
  • 2.2.5 ? フローティングスタックを持つ Linuxthreads

errno、h_errno、_res、を使用するソフトウェアは、使用する前にそれぞれ適切なヘッダーファイル
(errno.h、netdb.h、 resolv.h)を#includeしなければなりません。
しかし、ソフトウェアが調整されるまで、回避方法としてLD_ASSUME_KERNEL=2.4.19を使用することができます。