TotalView 8.9.2 でデバッグすると、プログラムが止まってしまう問題。
原因は、BDWGCが使っているシグナル(SIG_PWR, GCのコード中では SIG_SUSPEND) が、TotalView側の設定で Resend にしているにもかかわらず、実際にはプログラム側に送信されず、シグナルハンドラが呼ばれないので、それを待っているスレッドが止まってしまうからだ。
調査の結果、mainスレッドはシグナルを受け取っているが、他のスレッド(pthread_createで作成される)は、受け取れていなかった。スレッドの生成直後に、シグナルのブロック状況を確認するコードを入れたが、いずれのスレッドも、SIG_SUSPENDはブロックされていなかった。TotalView側の設定を、Resend以外にすると、もちろん動かない。
TotalView 8.9.0-2 や 8.8.0-2 だと問題なく動くので、これは TotalView 8.9.2-0 のバグである可能性が高い。
TODO: TotalView に報告する!
This is a problem of TotalView 8.9.2-0. I think this version of TotalView debugger has a bug on handling signals.
Please, use 8.9.0-2 or 8.8.0-2 on TSUBAME instead of 8.9.2-0.
Last edit: Koji Ueno 2013-05-11