在阅读了一些有关Mono 2.6垃圾收集器不足的报道之后,我决定给Mono 2.10一个机会。我发现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。其他人可以重现这个吗?这是一个错误还是只是我的安装?
以下是我尝试的各种运行时间和结果。
Mono 2.10.2(从Debian Squeeze上的源代码编译)
-- "Stack overflow: IP: 0x4153bb84, fault addr: (nil)"
Mono 2.8(源自Debian Squeeze的资料)
-- "Native stacktrace: ..."
Mono 2.10.2(Windows二进制文件)
-- "mono.exe has stopped working" dialog.
Mono 2.10.2(VMware镜像)
-- Segmentation fault
Mono 2.6.7(与Debian Squeeze捆绑在一起)
-- Works fine
使用的F#编译器来自2010年11月的CTP。