Project

General

Profile

Actions

バグ #776

closed

coil/tests/OSのテスト実行時エラー

Added by kurihara about 15 years ago. Updated about 15 years ago.

Status:
終了
Priority:
通常
Assignee:
Target version:
-
Start date:
07/09/2009
Due date:
% Done:

100%

Estimated time:

Description

Ubunt-8.10にてsrc/lib/coil/tests以下のテストを実行するとOSのテストの際に"Segmentation fault"で異常終了する。

具体的には、coil/include/OS.hのGetOpt::operator()()内のgetopt()呼び出しのところでエラーが発生している。

Ubunt-8.04ではエラーにはならない。

リビジョンは1435。

Actions #1

Updated by n-ando about 15 years ago

  • Assignee set to n-ando
Actions #2

Updated by n-ando about 15 years ago

  • % Done changed from 0 to 100

getopt(3)は引数の文字列配列の内容を変更するが、Ubuntu8.04とUbuntu8.10の間ではその処理方法が異なっている模様。
glibcのgetoptのソースを見る限りは、Ubuntu8.04とUbuntu8.10の間では根本的な違いはないことから、コンパイラのメモリの配置方法によるものではないかと推測される。
また、別の問題として、Ubuntu8.10のgetoptは、2回目以降の処理の問題があるように見受けられる。
getoptはグローバル変数を使用する仕様となっており、optindという変数を初期化することで、複数回の処理が実現できるようになっている。
しかしながら、これは、getoptの実装に強く依存するため、この方法自体POSIX汎用ではない。(FreeBSDではoptindに加えて、optresetという初期化フラグがグローバル変数として使用されている。)

以上の理由から、GetOptクラスをgetopt関数とは独立に実装することにする。

Actions #3

Updated by n-ando about 15 years ago

  • Status changed from 新規 to 終了
Actions

Also available in: Atom PDF