Ответ 1
Я сообщил об этой проблеме как об ошибке # 693905 в https://bugzilla.novell.com/show_bug.cgi?id=693905.
После прочтения некоторых сообщений о неадекватности сборщика мусора 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
Эквивалентный цикл С# код работает очень хорошо, как и программа F # hello world. Код F # также работает нормально с Mono 2.6 и .Net. Может ли кто-нибудь еще воспроизвести это? Это ошибка или это просто моя установка?
Вот несколько тестов, которые я пробовал, и результаты, которые я получил.
Моно 2.10.2 (скомпилировано из источников на Squeeze Debian)
-- "Stack overflow: IP: 0x4153bb84, fault addr: (nil)"
Моно 2.8 (скомпилировано из источников на Squeeze Debian)
-- "Native stacktrace: ..."
Моно 2.10.2 (двоичный файл Windows)
-- "mono.exe has stopped working" dialog.
Моно 2.10.2 (изображение VMware)
-- Segmentation fault
Моно 2.6.7 (в комплекте с Debian Squeeze)
-- Works fine
Используемый компилятор F # состоял из CTP в ноябре 2010 года.
Я сообщил об этой проблеме как об ошибке # 693905 в https://bugzilla.novell.com/show_bug.cgi?id=693905.