http://bugzilla.novell.com/show_bug.cgi?id=576343
http://bugzilla.novell.com/show_bug.cgi?id=576343#c0 Summary: Reflection.Emit emiting bad IL opcodes Classification: Mono Product: Mono: Runtime Version: 2.6.x Platform: PC OS/Version: Windows 7 Status: NEW Severity: Normal Priority: P5 - None Component: misc AssignedTo: [email protected] ReportedBy: [email protected] QAContact: [email protected] Found By: Third Party Developer/Partner Blocker: No Description of Problem: When using the F# Interactive window (Reflection.Emit) the Mono runtime is crashing after hitting some bad IL. Note that the same code compiles just fine with the regular F# compiler. (I suspect this has to do with tail calls.) Steps to reproduce the problem: 1. Download the latest F# CTP at: http://www.microsoft.com/downloads/details.aspx?FamilyID=b55f0532-ac3c-4106-918c-5586a953a7da&displaylang=en 2. Run the F# Interactive console (fsi.exe) under Mono 3. Input the given text and boom. Actual Results: Compiles just fine. Expected Results: Runtime crash from hitting back IL. How often does this happen? Every time. Additional Information: Here is a console session illustrating the problem: ----------------------------- D:\FSharp\Oct 2009 CTP\bin>fsi.exe Microsoft F# Interactive, (c) Microsoft Corporation, All Rights Reserved F# Version 1.9.7.8, compiling for .NET Framework Version v2.0.50727 For help type #help;; > type A() = class end - type B() = inherit A() - - let f2 x = - let rec g1 (c : #A) y = (g2 c (y-1) |> ignore) - and g2 (c : #A) y = (if (y >= 0) then (g1 (c) (y-1) )) - g1 (new B()) 3 - - f2 3;; type A = class new : unit -> A end type B = class inherit A new : unit -> B end val f2 : 'a -> unit > #q;; D:\FSharp\Oct 2009 CTP\bin>mono fsi.exe Microsoft F# Interactive, (c) Microsoft Corporation, All Rights Reserved F# Version 1.9.7.8, compiling for .NET Framework Version v2.0.50727 For help type #help;; > type A() = class end type B() = inherit A() let f2 x = let rec g1 (c : #A) y = (g2 c (y-1) |> ignore) and g2 (c : #A) y = (if (y >= 0) then (g1 (c) (y-1) )) g1 (new B()) 3 f2 3;; System.InvalidProgramException: Invalid IL code in FSI_0002:g...@6<b> (b,int): IL_ 0030: or at fsi_0002...@6[b] (B c, Int32 y) [0x00000] in <filename unknown>:0 at FSI_0002.f2[Int32] (Int32 x) [0x00000] in <filename unknown>:0 at <StartupCode$FSI_0002>.$FSI_0002.main@ () [0x00000] in <filename unknown>:0 at (wrapper managed-to-native) System.Reflection.MonoMethod:InternalInvoke (ob ject,object[],System.Exception&) at System.Reflection.MonoMethod.Invoke (System.Object obj, BindingFlags invoke Attr, System.Reflection.Binder binder, System.Object[] parameters, System.Global ization.CultureInfo culture) [0x00000] in <filename unknown>:0 Stopped due to error > #q;; -- Configure bugmail: http://bugzilla.novell.com/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are the QA contact for the bug. You are the assignee for the bug. _______________________________________________ mono-bugs maillist - [email protected] http://lists.ximian.com/mailman/listinfo/mono-bugs
