在 Lion 上完美运行的 OCaml 程序在 Mountain Lion 上失败,在 OCaml 运行时代码中启动时出现段错误:
Program received signal EXC_BAD_ACCESS, Could not access memory.
Reason: 13 at address: 0x0000000000000000
0x00007fff908e1f88 in large_malloc ()
在 Lion 上完美运行的 OCaml 程序在 Mountain Lion 上失败,在 OCaml 运行时代码中启动时出现段错误:
Program received signal EXC_BAD_ACCESS, Could not access memory.
Reason: 13 at address: 0x0000000000000000
0x00007fff908e1f88 in large_malloc ()
ocamlopt
当启用回溯时,本机编译的 () OCaml 运行时似乎存在一个普遍的问题,这对于 Mountain Lion 来说是新的。同样的崩溃会影响任何OCaml 二进制文件的启动,这些二进制文件是:
OCAMLRUNPARAM=b
)这甚至包括 OCaml 编译器工具链的一部分,它本身会在升级到 10.8 后突然停止工作。
截至 2012-07-19,这仍然会影响 OCaml SVN 主干(4.01.dev)。
解决方法是在使用本机编译的二进制文件时禁用回溯(取消设置OCAMLRUNPARAM
,或b
从参数字符串中删除)。
更新:
底层错误似乎是由于 OCaml 运行时实现中的堆栈对齐不足。自最初发布以来,现在正在OCaml 错误跟踪器上对其进行跟踪和修复。然而,就目前而言,解决方法仍然是唯一简单的选择。
问题可能会解决, OCaml 的 bugtracker 中有解释和补丁。