gcc version 4.1.2 20071124 (Red Hat 4.1.2-42)
です。
まず、最適化をかけると、
Breakpoint 1, SchedTaskArray::next (this=<value optimized out>, scheduler=0x1baf0,
p=<value optimized out>) at Cell/spe/SchedTaskArray.cc:161
ってな状態に。もちろん、value optimized out されたものはgdbからは見れない。
さすがに break point がかけられないってのは、なくなったみたい。
最適化をかけなければ、ちゃんと動くので、最適化なしでdebugってのはダメ。
gcc のコンパイルのバグってのもありあり。実際、中間変数に取っておくってので、最適化すると、なんか別物を取ってきてしまうってのを目撃しました。この手のものは bug report しにくい。それに、report しても、「新しいのでは治ってます」ってのが多いし。
このレベルになると、cpu の数が6個の時だけバグるとか、もう楽しすぎです。たぶん、タスクの数が変わるので、タスクを渡す配列の境目とかで異常が出ているんだと思う。その判定部分が最適化レベルによって振舞が異なるんでしょう。
「センセー、動きません」でおわちゃうので、自分でやるしかないみたいです〜
こういうことしなくないから、プログラミング言語の研究とかやっているのに、本末転倒っぽいっていうか、本道って言うか、自分で何とかしろっていうか...
でも、なんか楽しいです。
No comments:
Post a Comment