F#在Mono 2.10上崩溃

F#在Mono 2.10上崩溃,f#,mono,F#,Mono,在阅读了一些关于Mono 2.6垃圾收集器不足之处的报告后,我决定试一试Mono 2.10。我发现2.10运行时在以下简单的F#程序中崩溃: 等效的循环C代码与F#hello world程序一样运行良好。F#代码在Mono 2.6和.Net上也可以正常工作。其他人能复制这个吗?这是一个bug还是只是我的安装 下面是我尝试过的各种运行时和得到的结果 Mono 2.10.2(根据Debian Squence上的源代码编译) Mono 2.8(根据Debian Squence上的源代码编译) M

在阅读了一些关于Mono 2.6垃圾收集器不足之处的报告后,我决定试一试Mono 2.10。我发现2.10运行时在以下简单的F#程序中崩溃:

等效的循环C代码与F#hello world程序一样运行良好。F#代码在Mono 2.6和.Net上也可以正常工作。其他人能复制这个吗?这是一个bug还是只是我的安装

下面是我尝试过的各种运行时和得到的结果

  • Mono 2.10.2(根据Debian Squence上的源代码编译)

  • Mono 2.8(根据Debian Squence上的源代码编译)

  • Mono 2.10.2(Windows二进制)

  • Mono 2.10.2(VMware映像)

  • Mono 2.6.7(与Debian Squence捆绑销售)


使用的F#编译器来自2010年11月的CTP。

我已将此问题报告为bug#693905 at。

考虑到您尝试的平台/配置数量,这显然是Mono中的一个bug。请打开一个bug并附加可执行文件。谢谢。这可能是因为Mono缺乏尾部呼叫优化。看到这里。@sashang:我在测试Mono的尾部呼叫处理时遇到了这个问题。我怀疑这是原因,因为a)它在小输入上崩溃,b)生成的代码不包含任何尾部调用,只包含命令性循环。@Jb Evain:我现在提交了一个错误报告。@IanNorton#693905
let rec f x acc =
  if x = 0 then acc
  else f (x - 1) (acc + 1)

f 10 0
-- "Stack overflow: IP: 0x4153bb84, fault addr: (nil)"
-- "Native stacktrace: ..."
-- "mono.exe has stopped working" dialog.
-- Segmentation fault
-- Works fine