Memory error 'double free or corruption', 'invalid next size', 'invalid chunk size', ...
メモリエラーでプログラムが落ちるとき,停止する場所と実際の原因となっている場所が一致していないことが少なくない.例えば下の例では
lig_log.f90の
841行目で停止しているが,ここではごく単純な内部入力をしているだけであり,プログラムにミスがある訳ではない.またその前に
printを入れるとエラーメッセージの内容や落ちる場所が変わったりする.
要はどこかプログラムにミスがあるところでメモリの確保・解放中に問題が生じており,その時点でプログラムが停止しなかったために,そこで生じた問題が別の場所で顕在化した,ということである.配列の不正なインデックスなど,プログラムの動作上クリティカルな問題がどこかにあるはずなので,それを突き止める必要がある.
なおメッセージにはいくつかパターンがあるが,こういったケースではその内容にはあまり意味はない.
そういうクリティカルなエラーはコンパイル時にオプションをきちんと付ければ大体特定できる.
+ Fortran > Compile > gfortran