[PHP-users 1878] Re: Cobalt で SIGFPE ( Was:Re:PHP4.0.6で.php ファイルを認識できない

Rikio Watanabe php-users@php.gr.jp
Thu, 06 Sep 2001 15:48:16 +0900


渡辺@新潟です。

Cobalt 4.0でのPHP4.0.6の動作ですが、PHP4.0.6のソースを
書き換えることにより、正常に動作しましたので、報告いたします。
(この修正が適切かどうかは自信がありませんが)

■修正したソース
 php-4.0.6/ext/standard/crypt.c
■修正した行は114行目
 変更前:php_srand(time(0) * getpid() * (php_combined_lcg() *
10000.0));
 変更後:php_srand(time(0) * getpid() * (long)(php_combined_lcg() *
10000.0));

php_srandはマクロで定義されています。
また、php_combined_lcg関数はdoubleの値を返すのですが、php_srandマクロに
渡す値が、修正前ではdoubleになってしまいます。

php_srandは、php_rand.hに下記のように定義されています。
 /* Define srand Function wrapper */
 #ifdef HAVE_SRANDOM
 #define php_srand(seed) srandom((unsigned int)seed)
 #else
 #ifdef HAVE_SRAND48
 #define php_srand(seed) srand48((long)seed)
 #else
 #define php_srand(seed) srand((unsigned int)seed)
 #endif
 #endif

以上です。


> > > > OSは、Cobalt Linux release 4.0 (Fargo) です。
> > > > カーネルは、Kernel 2.0.34C52_SK on a mips です。
> > >
> > > backtrace すればはっきりしますが,
> > > Bug id #11363 と同じ現象かもしれません.
> > > http://www.php.net/bugs.php?id=11363
> > >
> > > # ということで Subject を変えました.
> > >
> > > > 上記URLを見て、PHPを--enable-debugでconfig/make/インストール
> > > > しました。
> > > > それから、.php のページをブラウザで見たのですが、
> > > >  coreファイルが作られていない。
> > > >  デバッガがインストールされていない。
> > > > ため、現時点ではそれ以上の情報を取れていません。
> > >
> > >  ・あきらめる
> > >  ・がんばって Debug する
> > >
> > > のいずれかを選ばれるしかないと思います.
> > > もちろん「Cobalt でうまく動いてるよ」という方が
> > > いらっしゃられば別ですが.
> >
> > とりあえず、ちょっと古いPHPのバージョンでの確認をしてみます。
> > その確認結果は、後で報告いたします。
> > それでもだめなら、デバッグするしかないですが...
> 
> 今、手持ちのPHP4.0.3のソースを元にインストールしました。
> 
> 結果は、正常に表示することができました。
> 
> 上記のURLで記述されていたPHP4.0.6のソースを見てみましたが、
> もしかしたら原因の特定ができるかもしれませんので、
> デバッグしてみようと思います。
> 
> 解決方法(ソースの修正個所)が分かったら、改めて報告いたします。
> 
> いろいろとありがとうございました。