OS X で gdb 7.4 がクラッシュする話

OS Xgdb 7.4 をビルドして C/C++ のプログラムをデバッグしていると, 同じセッションで2回プログラムを実行すると悲しいことが起きます:

長らく何でだろうと思っていたところ,  [1] でバグとして報告されていました. エラーを見ると分かると思いますが, malloc されていない間違ったポインタを free していたことが原因のようです.  件の問題を修正するパッチが開発版の方にチェックインされたようです [2] . 修正点は gdb/solib-darwin.c の 関数 darwin_bfd_open() の return res; の前に一行を加えるというものです. [2] の変更は gdb 7.4.1 のソースにも適用することができます. これにより先のクラッシュの問題を修正することができます.

ちなみに [1] のバグリポートを読むと  gdb のバックトレースを得るために, gdb を使って gdb をデバッギとして走らせて, その上でテストプログラムを実行しているのが面白いです.

[1] http://sourceware.org/bugzilla/show_bug.cgi?id=13619

[2] http://sourceware.org/ml/gdb-patches/2012-02/msg00098.html