1

在 Lion 上完美运行的 OCaml 程序在 Mountain Lion 上失败,在 OCaml 运行时代码中启动时出现段错误:

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

2 回答 2

3

ocamlopt当启用回溯时,本机编译的 () OCaml 运行时似乎存在一个普遍的问题,这对于 Mountain Lion 来说是新的。同样的崩溃会影响任何OCaml 二进制文件的启动,这些二进制文件是:

  • 本机编译(相对于字节码)
  • 在启用回溯的情况下运行(例如 via OCAMLRUNPARAM=b

这甚至包括 OCaml 编译器工具链的一部分,它本身会在升级到 10.8 后突然停止工作。

截至 2012-07-19,这仍然会影响 OCaml SVN 主干(4.01.dev)。

解决方法是在使用本机编译的二进制文件时禁用回溯(取消设置OCAMLRUNPARAM,或b从参数字符串中删除)。

更新
底层错误似乎是由于 OCaml 运行时实现中的堆栈对齐不足。自最初发布以来,现在正在OCaml 错误跟踪器上对其进行跟踪和修复。然而,就目前而言,解决方法仍然是唯一简单的选择。

于 2012-08-01T15:39:09.770 回答
1

问题可能会解决, OCaml 的 bugtracker 中解释和补丁。

于 2012-08-02T16:11:58.150 回答