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