九州大学 情報基盤研究開発センター 研究用計算機システムニュース   No.383                                 2016.08.23

+--------------------------------------------------------------------------+ |1.富士通C, C++コンパイラの実行結果異常について | |(スーパーコンピュータシステム)                       | +--------------------------------------------------------------------------+ ----------------------------------------------------------------- 情報基盤研究開発センター研究用計算機システムWWWホームページ     https://www.cc.kyushu-u.ac.jp/scp/ ----------------------------------------------------------------- 1.富士通C, C++コンパイラの実行結果異常について (スーパーコンピュータシステム) スーパーコンピュータシステムFX10 (hayaka, chihaya)の C, C++コンパイラにおい て,実行結果異常となる障害が見つかりました.障害は以下の条件をすべて満たした 場合に発生するもので,富士通製の Technical Computing Suite の C, C++ のみが 該当します.また,高性能演算サーバでは発生しません. 障害修正時期は2016年10月末を予定しています.心当たりのある方はセンターまで ( E-mail: request(at)iii.kyushu-u.ac.jp)ご相談ください. ●現象と条件 以下の条件をすべて満たした場合,関数の返却値が正しくないことがあります. 1) 翻訳時オプション -Xg (*1) が有効である. 2) プログラム中に以下の関数呼出し(*2)が存在する. __sync_bool_compare_and_swap 3) 2)の関数の第一引数のメモリアドレスが指す先の値と第2引数の値が異なる. 4) 2)の関数の返却値を参照している. <プログラム例> #include int main() { int x,y,z; x = 1; y = 2; z = 3; if(__sync_bool_compare_and_swap(&x, y, z)){ /* 2),3),4) */ printf(" ng \n"); }else{ printf(" ok \n"); } return 0; } (*1) 翻訳時オプション -Xg は ISO/IEC9899:1999準拠に加えて,GNU C の言語仕様 に基づいて翻訳することを指示します. (*2) __sync_bool_compare_and_swap は以下の機能を持つGNU互換関数です. ・第1引数が指す値と第2引数の値が等しい場合に第3引数の内容を第1引数の指す メモリに書き込みます.この時TRUEが返却されます. ・第1引数が指す値と第2引数の値が異なる場合は第1引数の指すメモリは更新され ません.この時FALSEが返却されます. ●障害に該当するかの確認方法 grep コマンドによりソースコード中に該当関数が存在するか確認お願いします. % grep -Ir "__sync_bool_compare_and_swap" <ソースファイルのディレクトリ> [問い合せ窓口] 九州大学 情報統括本部 HPC事業室 全国共同利用担当 Mail: request(at)iii.kyushu-u.ac.jp Tel : 092-642-2308