Lionで完全に機能したOCamlプログラムは、Mountain Lionで失敗し、OCamlランタイムコードでの起動時にsegfaultingします。
Program received signal EXC_BAD_ACCESS, Could not access memory.
Reason: 13 at address: 0x0000000000000000
0x00007fff908e1f88 in large_malloc ()
Lionで完全に機能したOCamlプログラムは、Mountain Lionで失敗し、OCamlランタイムコードでの起動時にsegfaultingします。
Program received signal EXC_BAD_ACCESS, Could not access memory.
Reason: 13 at address: 0x0000000000000000
0x00007fff908e1f88 in large_malloc ()
ocamlopt
Mountain Lionの新機能であるバックトレースが有効になっている場合、ネイティブコンパイルされた()OCamlランタイムに広範な問題があるようです。この同じクラッシュは、次のようなOCamlバイナリの起動に影響します。
OCAMLRUNPARAM=b
)これには、OCamlコンパイラツールチェーン自体の一部も含まれ、10.8にアップグレードすると突然動作を停止します。
これは、2012年7月19日現在でもOCaml SVNトランク(4.01.dev)に影響します。
回避策は、ネイティブのコンパイル済みバイナリを操作するときにバックトレースを無効にすることです(設定を解除するか、パラメータ文字列からOCAMLRUNPARAM
削除します)。b
更新:
根本的なバグは、OCamlランタイム実装のスタックアライメントが不十分なことが原因のようです。最初の投稿以来、これは現在、OCamlバグトラッカーで追跡および修正されています。ただし、現時点では、回避策が唯一の簡単な選択です。
この問題は解決されるかもしれません。説明とパッチが OCaml のバグトラッカーにあります。