为什么OCaml二进制文件在Mac OS X 10.8(Mountain Lion)上崩溃?

时间:2012-08-01 15:39:10

标签: macos ocaml osx-mountain-lion

在Lion Lion上完美运行的OCaml程序失败,在OCaml运行时代码启动时发生了分段错误:

Program received signal EXC_BAD_ACCESS, Could not access memory.
Reason: 13 at address: 0x0000000000000000
0x00007fff908e1f88 in large_malloc ()

2 个答案:

答案 0 :(得分:3)

当启用了回溯功能时,本机编译的(ocamlopt)OCaml运行时似乎存在广泛的问题,这是Mountain Lion的新功能。同样的崩溃会影响任何 OCaml二进制文件的启动:

  • Native compiled(与字节码相对)
  • 启用了回溯功能(例如,通过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