← |
2024年11月 |
→ |
日 |
月 |
火 |
水 |
木 |
金 |
土 |
|
|
|
|
|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
|
26 |
27 |
28 |
29 |
30 |
|
前回予告したとおり、 今回は、自分の遭遇した微妙なバグについての話。
まぁ、これは10年ほど前をはじめ、何度か遭遇したバグ。 「同じバグを何度も発生させるなんて! そんなの、あたしが許さない」 と石を投げられそうだけど、こればかりは、不可抗力と言いたい。
1つめの例〜C社のCPUの場合〜 それは、MMXPentiumが登場した頃。 ソフトを作る前の技術検証を行っていたとき、 当時、珍しいMMXの勉強を兼ねた検証を行っていた。
ところが、特定のパソコンでエラーが起きることに気がついた。
当時のテストしていたのは、 CPUID命令で、MMX機能の有無を確認して、 MMXが使える場合には、MMXを使うというプログラム。
ところが、そのエラーの起きる特定のパソコンでは、 CPUID命令ではMMX搭載と判定されるのに、 いざ、MMX命令を使うと「未定義の命令です」というエラーが起きるのだった。
原因は、当時有名だったIntel互換CPUメーカーのCPUで、 そのCPUの初期出荷の一部で、MMX非搭載にもかかわらず、 CPUID命令でMMX搭載と判定されるというCPU自体に問題があったのでした。
「こんなの絶対おかしいよ」と言いたい気持ちを飲み込んで、 特定のCPUでエラーが起きる場合に、 代替のプログラムを使う様にアナウンスをした。 エンドユーザーに、CPU買い換えろとか、言えないしね。
2つめの例〜V社のCPUの場合〜 時は経て、Penitum4が出始めた時代。 MMX命令の前述のバグのあるようなCPUも、 動作保証外になるほどレガシーな物になり、 それ以来、同様のバグを抱えるCPU発売されなかったので、 もう何も恐くない。・・・と、油断してたorz
ある時に作ったソフトが、 動かないというクレームが来たのだ。
このユーザー様は、ユーザーの鑑とも言える対応をしてくれて、 エラー報告と共に、エラーが起きたときの、 コアダンプファイルを送ってくれたのだ。
それは、プログラマがどうしてもバグがとれないときに、 お客様にお願いすることがある、最後に残る道しるべであり、 それを最初からもらえるというのは、プログラマへの、最高の報告方法で、 すぐに原因は特定できた。
まず、エラーは「未定義の命令です」という、 どこか昔に逢った、ような……見覚えのあるエラーだった。 そして、エラーが起きた場所を調べてみると、 PentiumProから搭載されたCMOV命令でエラーが起きていたのだ。
どうやら、Intel互換CPUであるV社のCPUは、 CPUID命令でCMOVサポートと返してくるにもかかわらず、 CMOV命令が搭載されていないようなのである。
そして、もう一つ問題があって、 自分は、CMOV命令を使った覚えがないことだ
「これって、ほんとにバグ?」とか「CMOV命令なんてあるわけない」 と思いつつ調べてみたら、コンパイラが最適化の一環として、 CPUIDでCMOV命令が使えると返してきたCPUには、 CMOV命令を勝手に使うという最適化をしてくれていたのだ。
結局、そのCPU専用に最適化レベルを下げたプログラムを、 修正プログラムとして提供することになったorz
まとめ いずれの例も、根本の原因はハードウェアメーカーだとは思う。 でも、ハードウェアメーカーが大規模なリコールをしない限り、 プログラマは、それを仕様として受け止めて修正せざるを得ない。
エンドユーザーから見れば、誰が悪いかは関係なく、 正しく動くソフトが欲しく、 それが動かないならば、バグを含んだソフトと判断される。
また、公開した当初は、問題が無くても、 将来的に、不具合を抱えたCPUが出現するなど 未来永劫正しく動く保証は誰にも出来ない。
それを、将来にわたってメンテナンスを しなければならないのだとしたら 個人的に便利なソフトを作っても、 フリーソフトとしては、もう誰にも公開しない。って気になります。
でも、エンジニアは 全てのバグを製品化前に消し去りたいと努力をしている事や、 それでも、どうにもならない事もあるということをゼヒ知っておいてもらえれば、 それはとっても嬉しいなって、思うのですよ。
わかる人にだけ追記: ちょっと、無理してがんばりすぎた。今は反省している。 反省しているのは、あと1話分入れられなかったことorz
|
00:38, Wednesday, Jun 01, 2011 ¦ 固定リンク
¦ 携帯
■コメント
■コメントを書く
※コメントの受け付けは終了しました
|
|