[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[debian-users:35448] Re: illegal instructions エラーとXの crash



At Tue, 26 Nov 2002 22:47:45 +0900,
Yasuhiro Hayase wrote:
> 私も最近 C3 のマシンを導入して同様の問題に遭遇しています。
> 
> libssl0.9.6 に含まれている、 /usr/lib/i686 以下のライブラリが、C3 では動
> 作しないようです。今のところ、/usr/lib/i686 以下を手で削除してしのいでい
> ますが、ちゃんと原因追及をして報告しなければ…と思っていた所です。

その通りです。該当ディレクトリを消せば直ります。

この問題は既に1カ月以上ぶちあたっていて、どうしたものかと解決策を探し
ている途中です。

VIA C3 は 686 class processor にも関わらず intel P6 の拡張 instruction 
の cmov (Conditional MOV) 命令をサポートしていません。しかし、gcc は 
-arch=i686 指定された場合 cmov を使用してしまいます。gcc の吐くアセン
ブラコードを見ればすぐわかりますが、あちこちで cmov が多用されてしまい
ます。従って、VIA C3 上でi686 最適化したプログラムは illegal
instructions にほぼ確実にぶつかるでしょう。

逆にいえば、i686 最適化されたコードが使用されない限り、illegal
instruction は発生しないはずです。

なお、CMOV の使用によって JMP 命令が低減されるためプログラムの高速化に
貢献することになります。従って、VIA C3 以外の大多数の 686 ユーザにとっ
て、CMOV 最適化が外されることは避けたいことでしょう。kernel はプロセッ
サが VIA C3 指定の場合 i586 としてコンパイルすることでうまく乗り切って
いますが、一般のプログラムではそうもいきませんね。

なお /proc/cpuinfo をするとお使いのプロセッサが cmov をサポートしてい
るかがわかります。libssl0.9.6 のようなライブラリに関していえば、glibc 
側の processor capability で対処できないか調査中ですが、C3 マシンがま
わりにないのでそのままほっといてしまっています。また、gcc 側のバグとも
いえますが、gcc team がこの問題にどのように対応する予定なのか私は知ら
ないので、その辺りから調べないといけませんね。

> mozilla-snapshot も C3 に変えてから起動しなくなったのですが、同時に
> dist-upgrade しているので、どちらが悪いのか原因がつかめていません。

これも illegal instruction でしょうか? 

> >  また、X は起動するのですが、display managerでfailsafe以外を
> >  選択すると X がcrashします。このためWindow managerが利用でき
> >  ません。(consoleから startx を普通に行うと当然crashします)
> 
> こちらは遭遇しておりません。gnome-session は正常に動いているようです。

これは X11 の savage.o の問題ではないでしょうか。私も (いまだに)
Savage ユーザなのですが、Debian の XFree86 でちゃんと動いています。

-- gotom