单声道2.10上的F#崩溃
问题描述:
在阅读了关于Mono 2.6垃圾收集器的不足之处后,我决定给Mono 2.10一个去。我发现,2.10运行时崩溃,下面简单的F#程序:单声道2.10上的F#崩溃
let rec f x acc =
if x = 0 then acc
else f (x - 1) (acc + 1)
f 10 0
等效循环C#代码运行得很好一样的F#的Hello World程序。 F#代码也适用于Mono 2.6和.Net。其他人可以重现吗?这是一个错误还是只是我的安装?
以下是我尝试过的各种运行时和结果。
-
单2.10.2(从源在Debian挤压编译)
-- "Stack overflow: IP: 0x4153bb84, fault addr: (nil)"
-
单声道2.8(从源在Debian挤压编译)
-- "Native stacktrace: ..."
-
单声道2.10.2( Windows二进制)
-- "mono.exe has stopped working" dialog.
-
单2.10.2(VMware映像)
-- Segmentation fault
-
单2.6.7(捆绑了Debian的挤压)
-- Works fine
使用的F#编译器是从2010年11月CTP。
答
我已经报告过这个问题,因为bug#693905在https://bugzilla.novell.com/show_bug.cgi?id=693905。
+0
现已解决(2011年6月) – Justin 2011-07-08 03:42:21
授予您尝试过的平台/配置的数量,这显然是Mono中的一个错误。请打开一个错误并附上可执行文件。谢谢。 – 2011-05-15 19:29:21
这可能是由于Mono缺少尾部呼叫优化。看到这里http://flyingfrogblog.blogspot.com/2009/01/mono-does-not-support-tail-calls.html。 – sashang 2011-05-15 21:08:18
@sashang:当我遇到这个时,我正在测试Mono的尾部呼叫处理过程。我怀疑这是因为a)它在小输入上崩溃,b)生成的代码不包含任何尾部调用,只有命令循环。 – petebu 2011-05-15 21:21:52