GCC 4.0.2 のバグ、Linus の野望を暴く 88
ストーリー by kazekiri
斜めに見よう 部門より
斜めに見よう 部門より
tamo 曰く、
Linux カーネルが Oops と言ったら、まず何を疑うべきだろうか。 Ingo Molnar が procfs まわりで遭遇した問題は、Linus Torvalds の解析により コンパイラのバグであると判明した。 Linus は、原因となった GCC 4.0.2 の最適化バグを「違法行為 (Illegal)」と呼び、 「そんなコンパイラは役立たずのゴミだ」と言い切っている。 Alan Cox に「コンパイラの最適化に関する禁止令なんて存在しないんだから、違法とか言うなよ」と指摘された彼は、 「ああ、俺が世界の支配者になるとき違法になるんだった。ちょっと先走りしすぎたね」と返し、 「支配者になるのは、いつ頃?」という問いに「鋭意奮闘中。なかなか簡単じゃないんだなこれが」と答えている。
無駄にハッカーだな (スコア:5, すばらしい洞察)
# ありません? 顔色を伺ってるつもりはなくても、進捗会議とかでつい色良い返事を返しちゃうこと
Go Other WayなのでID
M-FalconSky (暑いか寒い)
プログラマーはマシン語を理解しておくべき? (スコア:3, すばらしい洞察)
Re: プログラマーはマシン語を理解しておくべき? (スコア:3, 興味深い)
GCC 4.2.2 も出たみたいだけど… (スコア:3, 興味深い)
ロバストだから?
ああだこうだデバッグしていて最後の最後に不具合の原因がコンパイラのバグであることがわかると、
コンパイラを呪いたくなるよね。無保証のフリーソフトウエアだし無料で使っているのにね。さいきん
ぼくはgfortranのconjg(transpose(z(:,:))のバグ [gnu.org]にハマりました。量子力学方面では
かなりヤバいバグなんですが、人的資源の問題から4.2.xでは直さないと言っていたような、直すこと
になったような。gfortranをゴリゴリ使いたいならリポジトリのHEAD(4.3.0になる予定のやつ)を使え、
ってことみたいです。たしかに4.2.xだとInternal Compiler Error (ICE)になっちゃうバグも直ってて
よいかんじです。
って、gfortranを使っている人、います?
love && peace && free_software
t-nissie
ストーリーの概要 (スコア:5, 参考になる)
タレコミ分のリンク先 [kerneltrap.org]に書いてありますが、 GCC 4.0.2を使っていたのは、クラッシュレポートを送ってきたIngo Molnar氏です。Linusは自分のGCC 4.1.2は同じソースから正しいコードを吐くと書いてます。
話の流れはこんな感じ……
言葉遣いとジョーク部分はともかく、最初のレポートから数時間で的確に問題の所在を突き止め、察しの悪い相手にも懇切丁寧な解説まで書いちゃうLinus氏はやはりたいした人物なのだなあと知りました。私はもっぱら*BSDのユーザだけど、Linux党員が「優しい独裁者」を称える理由がちょっと分かった気がしました。:-)
Re:GCC 4.2.2 も出たみたいだけど… (スコア:1)
計算結果で納得いかないときは複数のコンパイラで結果を比較するという方法で調べることがあります。
Sun Studio 11 にも Fortran コンパイラありますよ。
Re:GCC 4.2.2 も出たみたいだけど… (スコア:1)
g95はFortran 95/2003の機能はかなり実装が進んでいるけど、OpenMPが使えない。
gfortranはFortran 95/2003の機能の実装が少し遅れてるけど、OpenMPが使える。
とぼくは理解しています。
おっしゃるとおり、いろいろなコンパイラやいろいろなアーキテクチャ(32bit/64bit、
Intel系/PowerPCなど)のCPUで自分のプログラムをコンパイルするとバグを見つけやす
いです。でもさいきんはIntel系のCPUばかりになってしまって、浮動小数点数をIEEE????
(何番だったかな)準拠で扱ってくれるのが少なくなってます。まあ、IEEE????より
Intel系のCPUのほうが精度はよいんですが。でもちょっと変。
love && peace && free_software
t-nissie
Re:GCC 4.2.2 も出たみたいだけど… (スコア:2, 参考になる)
SSE(2/3...)がかなりIEEE準拠に設計されているようです。
実行速度も多少速くなるはず。
鋭意奮闘中・・・ (スコア:2, おもしろおかしい)
違法誘導力もStallmanに大幅に負けてる。
確かに困難な道のりだ。
Re:鋭意奮闘中・・・ (スコア:1)
>違法誘導力
新語を使いたいならとりあえず単語の説明求む。
エスパーじゃないんで分からんけど
もしかして実行支配力は実効支配力と書きたかった?
Re:鋭意奮闘中・・・ (スコア:1)
何となく言いたいことは伝わってくるし、
別にいちいちツッコミ入れなくてもいいんじゃない?
気楽にいこーぜ。
ごめんなさい。
Re:鋭意奮闘中・・・ (スコア:1, おもしろおかしい)
俺は新世界の神になる (スコア:2, おもしろおかしい)
デスノート→gcc
# そういえば、彼の名前もLだ
Re:俺は新世界の神になる(ヲフトピ (スコア:1)
#正間間常ってカンジで。
ハックというトピックはないのね (スコア:1, 興味深い)
ただのジョークだろ? (スコア:1, おもしろおかしい)
まぁLinusが俺と同じ野望を持っているって事だけは理解した。
♪Everybody Wants To Rule The World♪ (スコア:1)
love && peace && free_software
t-nissie
自分のバグをコンパイラのせいにする奴ばかり (スコア:1, 興味深い)
いや、もちろん Linus のことでなく、私の周りの人々。
Re:自分のバグをコンパイラのせいにする奴ばかり (スコア:2, おもしろおかしい)
先週2日続けてg++のバグ(3.3.x、どっちも4.1.xでは出なかった)踏んだ俺が来ましたよ?
その手のバグはだいたい年一回くらいのペースで踏んでるし、滅多にないって程には少なくはないと思うよ。
# 言いたいことはわかるけどさ。
Re:自分のバグをコンパイラのせいにする奴ばかり (スコア:1, 興味深い)
なかなか簡単じゃないんだなこれが (スコア:1)
fjの教祖様
Re:なかなか簡単じゃないんだなこれが (スコア:2, おもしろおかしい)
次作『いつまでも fat と思うなよ』にも、ぜひご期待ください。
---
『ご冗談でしょう、Linusさん』とか、色々ありそう。
Re:なかなか簡単じゃないんだなこれが (スコア:2, おもしろおかしい)
それはすでに Microsoft が…
「本物の」バイト単位でのメモリアクセスが必要だって事? (スコア:0)
Re:「本物の」バイト単位でのメモリアクセスが必要だって事? (スコア:5, 参考になる)
i386系はアライメントにあまりうるさくないからページ境界をまたがない限りは表面化しないけど
> char c = *p++;
このコードをワードアクセスなんかにされたら、ARM/MIPS/SHなどのアライメントに厳しいCPUじゃ、一発アウトですよね。
この調子だと文字列操作なんかで良く使う
> while ((c = *str++) != '\0')
見たいなコードも怪しくなってくるんで、「legal optimization」って言いたくなるのも良くわかるなぁ。
# gccの最適化に伴う弊害ではstrict aliasing関連もちょっとやりすぎな気がする
Re:「本物の」バイト単位でのメモリアクセスが必要だって事? (スコア:1, おもしろおかしい)
GCCのマニュアルに、charはバイトアクセスしますと書いてない限り、バグとは言い難い気がするけど。
Re:「本物の」バイト単位でのメモリアクセスが必要だって事? (スコア:1, すばらしい洞察)
C言語なんだから(w
言ってること分かるか?
Re:「本物の」バイト単位でのメモリアクセスが必要だって事? (スコア:1)
Re:「本物の」バイト単位でのメモリアクセスが必要だって事? (スコア:2, 参考になる)
'a'を'A'に書き換えたくて
としたときに4バイトアクセスされて後ろの3バイトを壊されるかもしれません。そういう時に「コンパイラがバイトアクセスに展開するのを当てにせずに、そこだけアセンブラに」とかやっていたらきりがありませんよ。
Re:「本物の」バイト単位でのメモリアクセスが必要だって事? (スコア:1)
# ちょっと手元に標準仕様がないんで戯言扱いで
1バイトだけの書き換えでも、4バイト読み→1バイト変更→4バイト書き (Read-Modify-Write) で実装する可能性もあるからでは。
読み書き先が volatile だと上記の方法を使うのは NG だと思われます。
Re:「本物の」バイト単位でのメモリアクセスが必要だって事? (スコア:1)
ここは、「charへのポインタなんだから」と勝手に推測します。
コンパイラがバグっているからです。
元の話の例では2バイトアクセスになっています。
なんでそういう話になるのか (スコア:0)
それともそれがスラドクオリティ?
Re:なんでそういう話になるのか (スコア:2, 興味深い)
短絡と狭量こそがフレームの大元ですよ。
# しかし、ニヤリとする笑い話の紹介だが、オチまで付いてるので
# これ以上どう議論しろと? という困ったタレコミではあるな。
Re:なんでそういう話になるのか (スコア:1, すばらしい洞察)
#一連のやり取りを面白いと思うのがスラドクオリティではあると思う。
まったくなんでそういう話になるのか (スコア:1, 興味深い)
// ま、最近ACに日本語の読み書きが不自由なのが増えてるのは確かだな。
// ・・・まさか全部同一人物じゃないだろーな。
Re:まったくなんでそういう話になるのか (スコア:1)
Re:まったくなんでそういう話になるのか (スコア:1)
Re:まったくなんでそういう話になるのか (スコア:2, すばらしい洞察)
セキュリティと言うものを論じる人が、そんなことじゃ困ります。「絶対安全」以外を、すべて同じ「危険」で捉えてしまうのでは、セキュリティは論じられません。「少し危険」「かなり危険」「絶対に危険」など、いろいろあります。そう考えなければ、「システムを使わない」という解くらいしか残りません。
同様に、/.Jの様に「自由にIDが取れる」を、区間[「すべてAC」,「本人確認を厳密に行う」]の間のどこに位置付けるか、というと、普通は、「すべてAC」=「自由にIDが取れる」でも「自由にIDが取れる」≒「すべてAC」でもなく、「すべてAC」<「自由にIDが取れる」<「本人確認を厳密に行う」と考えるでしょう。まあ、二番目の不等号は「≪」が適当かも知れませんが。
また、危険度だけではなく、それによる利便性も併せて考えなければ、セキュリティ議論として不十分です。
「自由にIDが取れる」程度で実現される区別ができれば十分と考えるユーザが多ければ、それはそれでOKなのです。
もちろん、あなたの様な極端な考え方があっても構わないわけですが、その考え方に一般的ではありません。
Re:まったくなんでそういう話になるのか (スコア:2, 興味深い)
スラドで,どのような対策をしてるかは,この「過去記事 [srad.jp]」が参考になると思います。
んで・・・ 上記の過去記事によれば,自作自演は主にAC発言で行われてますね。同じことをIDでやろうとすると,たとえ捨てハンで,まったく別のサイトで発言していても,複数の発言を並べて読むと,なんとなく「このIDは同一人物だな」って,わかっちゃうものなのでIDの自演は,なかなかできないと思いますよ。
斜点是不是先進的先端的鉄道部長的…有信心
Re:まったくなんでそういう話になるのか (スコア:1)
自分が極論しか話さないからと言って、他人も極論を話していると考えるのは間違っています。
0か1か議論のような極論よりはマシです。
そうですね。例えば、SS1 [srad.jp]さんとRyo.F [srad.jp]が同一人物か、なんて疑い出したらキリがないので、「多分違う人物じゃないかなぁ」と考えるでしょうね。あなたもそう考えてるでしょ?その程度でいいって話です。
Re:まったくなんでそういう話になるのか (スコア:1, 興味深い)
で、「ID発言が主流な状態」は実現可能だとお考えですか?不可能か可能かじゃなくていいんで、見込み程度で。
>そうですね。例えば、SS1さんとRyo.Fが同一人物か、なんて疑い出したらキリがないので、
同意。
>「多分違う人物じゃないかなぁ」と考えるでしょうね。
ああ、そこで根本的に意見が合わないわ。私は「同一人物でも他人でも知った事じゃないので最初からそんなこと考えもしません」。別に同一人物だと言われても全然気にしませんよ。書き込みの内容にしか興味がないんで、誰が書いたかなんて正直どうでもいいです。
Re:まったくなんでそういう話になるのか (スコア:1)
その割りに、私Ryo.Fの意見を求めてますよね。「…お考えですか?」って。誰が書いたか気にしてないとは思えませんが。
それとも、誰が書いたとも解らない、しかも一連の議論での立場も判らない人の意見を求めているんですか?それって何の役に立つんですか?
Re:まったくなんでそういう話になるのか (スコア:1)
でも、筋が通っているかを判断するのに、一つのコメントで完結しているならともかく、それまでの議論の文脈と関連している場合はどうします?ACだと、なんの材料もないけど、IDだと多少は目安になりますよね。
そういう状況でもACとIDに差がない、と言う意見もあっていいですけど、それならば、それまでの議論の文脈に関わらず、一つのコメントで完結するように書くべきでしょう。あなたのコメントがその流儀で書かないのはなぜでしょう?
自作自演に関しても、ACの場合とIDの場合を同様に判断しない場合が普通でしょう。ACとIDでそのコスト(手間)が違いますし、IDの場合は過去の発言を追跡することが可能ですから。
もちろん、あなたの様な意見の持ち主がいても構わないわけですが、一般的ではないと思います。
話半分に聞いておきます。あなたは、どんな場合でも発言者に拠らず発言の価値を判断する、というわけではない、と予言しておきましょう。
Re:まったくなんでそういう話になるのか (スコア:1)
あなたは、「明らかに別人」とか「おそらく同一人物」とか、そういうものに関わらず、「書き込みの内容にしか興味がないんで、誰が書いたかなんて正直どうでもいい」と書いたではありませんか。それとはどう整合するんですか?
つまりは、「…正直どうでもいい」と言うのは、実は全然正直ではなかった、ということですよね。その辺りを明らかにしておかないと、水掛け論以下の議論にしかならないと思います。
「数字出さないで不等号いっぱい並べちゃうのもダサい」と書いた人の意見にしては、定性的過ぎてダサダサですが、いかがなもんでしょうか。
そうは言っても、まずは自分から始めないとね。他人に提案するなら、自分からやって見せないと。やってみる前から「できるかどうかわからないからやらない」なんて態度を私は採らない、というだけです。
「なんの」というのが極論、0か1か脳ですね。
まあ私自身、「説得力ありまくり」とは当然思っていませんが(笑)。
はい。
例外を認めるに吝かではありませんが、あなたの場合、自ら課したルールに当てはまらないことが多すぎで、例外と言うよりはむしろ、ルールが間違っていたと考えるべきでしょう。
Re:まったくなんでそういう話になるのか (スコア:1, おもしろおかしい)
俺のくせに何言ってんだよ。
可愛いなw (スコア:0)
Re:Illegal Function Call (スコア:1)
ほお。なんだかその言い方だと速度違反や路上駐車がまるで軽微な犯罪のように聞こえますが、
場合によっては人命に関わるという認識をお持ちの上での発言でしょうか?
# 路上駐車は緊急車両の通行を阻害し、また交通事故の直接・間接的な原因となります。
# 速度違反はそれこそ自他共に危険に曝す悪質な違反です。
# キレイゴトだとは思いますが、ジョークで流すにはあんまりだと思ったので一応つっこんでおきます。
Re:Illegal Function Call (スコア:1)
本来の刑はさほど低くありませんし。
まあ、軽微な犯罪として引き合いに出すなら、文字通り軽犯罪法違反でしょう。
Re:Illegal Function Call (スコア:1)
「××って犯罪だよねー!」みたいな? (スコア:1)
私なら[これはひどい]タグを付けてdisりたい例だけど、「××は存在自体が犯罪です」(××=不細工、オタクなど世間から疎まれている集団)という発言も日常茶飯に見聞きするし。
ハイバネーション(=冬眠)中。 押井徳馬(・(T)・)