gcc-4.2.1-dw2-2でビルドしたbjamがクラッシュする問題
http://kikyou.info/diary/?200802#i28_1
ちょっと気になったので試してみました。
bjamにデバッグ情報を付けるため、
set Path=C:\gcc-4.2.1-dw2-2\bin;%Path% set BOOST_JAM_TOOLSET_ROOT=C:\gcc-4.2.1-dw2-2\ build.bat gcc --symbols
でビルドしています。
確かに100%クラッシュするんですが、gdbから起動するとboost-build.jamが見つからないでエラーになるもののクラッシュしません。(--debugでビルドできるデバッグ版は動きます)
仕方がないので、Visual StudioのJITデバッガで捕捉して、コールスタックの各アドレスをaddr2lineで調べました。
- hash.c:172
- filesys.c:48
- filent.c:188
- timestamp.c:143
引数も覗いたところ、file_dirscan()の呼び出しまでは問題なくて、_findfirst/_findnextの結果作成したリストが壊れているようです。
ここから先はちゃんと追えてないんですが、単にgcc4.2.1がバグってるだけで、sjlj版でも起こるんじゃないかと思います。(要確認確認済み)