Hi, I have this monstrous f# 2.0 program
My mono version is
Mono JIT compiler version 2.9 (master/f593354 Sun Dec 26 03:15:55 EET 2010)
Copyright (C) 2002-2010 Novell, Inc and Contributors. www.mono-project.com
TLS: __thread
SIGSEGV: altstack
Notifications: epoll
Architecture: x86
Disabled: none
Misc: softdebug
LLVM: supported, not enabled.
GC: Included Boehm (with typed GC and Parallel Mark)
//---------------------------------------------
module Main
let rec gcd x y =
if y = 0 then x
else gcd y (x%y)
let main =
printfn "%i" (gcd 4 2)
main
//-----------------------------------------------
And the problem is that output from running the program is as follows:
Stacktrace:
at (wrapper managed-to-native) System.Reflection.MonoMethodInfo.get_parameter_info (intptr,System.Reflection.MemberInfo) <0xffffffff
at System.Reflection.MonoMethodInfo.GetParametersInfo (intptr,System.Reflection.MemberInfo) <0x00013
at System.Reflection.MonoCMethod.GetParameters () <0x00015
at System.Reflection.MonoCMethod.Invoke (object,System.Reflection.BindingFlags,System.Reflection.Binder,object[],System.Globalization.CultureInfo) <0x00035
at System.Reflection.MonoCMethod.Invoke (System.Reflection.BindingFlags,System.Reflection.Binder,object[],System.Globalization.CultureInfo) <0x00024
at System.Reflection.ConstructorInfo.Invoke (object[]) <0x0003f
at System.Activator.CreateInstance (System.Type,bool) <0x0017c
at System.Activator.CreateInstance (System.Type) <0x00012
at Microsoft.FSharp.Reflection.FSharpValue.MakeFunction (System.Type,Microsoft.FSharp.Core.FSharpFunc2<object, object>) <0x00145>
at Microsoft.FSharp.Core.PrintfImpl.capture@529<b, c, d> (Microsoft.FSharp.Core.FSharpFunc2, Microsoft.FSharp.Core.FSharpFunc`2<char, Microsoft.FSharp.Core.Unit>, Microsoft.FSharp.Core.FSharpFunc`2,string,int,Microsoft.FSharp.Collections.FSharpList1<object>,System.Type,int) <0x00147>
at Microsoft.FSharp.Core.PrintfImpl.gprintf<b, c, d, a> (Microsoft.FSharp.Core.FSharpFunc2, Microsoft.FSharp.Core.FSharpFunc`2<char, Microsoft.FSharp.Core.Unit>, Microsoft.FSharp.Core.FSharpFunc`2,Microsoft.FSharp.Core.PrintfFormat4<a, b, c, d>) <0x000dd>
at Microsoft.FSharp.Core.PrintfModule.kprintf_imperative<a, b, c> (Microsoft.FSharp.Core.FSharpFunc2,b,Microsoft.FSharp.Core.FSharpFunc2<char, Microsoft.FSharp.Core.Unit>,Microsoft.FSharp.Core.PrintfFormat4) <0x00058
at Microsoft.FSharp.Core.PrintfModule.PrintFormatToTextWriterThen (Microsoft.FSharp.Core.FSharpFunc2<Microsoft.FSharp.Core.Unit, TResult>,System.IO.TextWriter,Microsoft.FSharp.Core.PrintfFormat4) <0x0004d
at Microsoft.FSharp.Core.PrintfModule.PrintFormatLineToTextWriter (System.IO.TextWriter,Microsoft.FSharp.Core.PrintfFormat`4) <0x0004d
at .$Main.main@ () <0x00042
Native stacktrace:
mono() [0x80dc13b]
mono() [0x811c65b]
mono() [0x8059a11]
[0x7af40c]
mono() [0x8228214]
mono() [0x8228214]
mono() [0x8228214]
mono() [0x8228214]
mono() [0x8228214]
mono() [0x8228214]
mono() [0x8228214]
mono() [0x8228214]
mono() [0x8228282]
mono() [0x822991e]
mono() [0x822aa9d]
mono(mono_array_new_specific+0xea) [0x813ba9a]
mono() [0x81c63a1]
mono() [0x8149ac8]
[0xc04328]
[0xc042e4]
[0xc042be]
[0xc0455e]
[0xc0451d]
[0xc044d8]
[0xc0349d]
[0xc0330b]
[0xc02f9e]
[0xbfe960]
[0xbfe6c6]
[0xbfe571]
[0xbfe4de]
[0xbfe44e]
[0xbf9d2b]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
[0x9bf0724]
Debug info from gdb:
Could not attach to process. If your uid matches the uid of the target
process, check the setting of /proc/sys/kernel/yama/ptrace_scope, or try
again as the root user. For more details, see /etc/sysctl.d/10-ptrace.conf
ptrace: Operation not permitted.
=================================================================
Got a SIGSEGV while executing native code. This usually indicates
a fatal error in the mono runtime or one of the native libraries
used by your application.
Aborted
It is a huge problem with mono or f#? By the way, the same function works when using pattern matching instead of "if".