모노로 System.Reflection.Emit
으로 내 보낸 어셈블리에서 이상한 버그가 나타납니다. 내 어셈블리를 실행하려고하면 InvalidProgramException
: IL 코드가 잘못되었습니다.InvalidProgramException 도움말 (잘못된 일리노이 코드)
.method public static hidebysig
default void f_main (class [Pine.Core]Pine.Core.Function A_0, class [Pine.Core]Pine.Core.ValueList A_1) cil managed
{
// Method begins at RVA 0x2144
// Code size 26 (0x1a)
.maxstack 4
.locals init (
class [Pine.Core]Pine.Core.Function V_0,
class [Pine.Core]Pine.Core.IScope V_1,
class [Pine.Core]Pine.Core.ValueList V_2,
class [Pine.Core]Pine.Core.IScope V_3)
IL_0000: ldarg.0
IL_0001: stloc.0
IL_0002: ldarg.1
IL_0003: stloc.2
IL_0004: ldloc.0
IL_0005: ldftn instance class [Pine.Core]Pine.Core.IScope class [Pine.Core]Pine.Core.Function::get_Scope()
IL_000b: stloc.1
IL_000c: ldloc.1
IL_000d: newobj instance void class [Pine.Core]Pine.Core.BlockScope::'.ctor'(class [Pine.Core]Pine.Core.IScope)
IL_0012: stloc.3
IL_0013: ldloc.2
IL_0014: call instance void class [Pine.Core]Pine.Core.ValueList::Clear()
IL_0019: ret
} // end of method PineType::f_main
오류가 난 아무 생각이 왜 IL_000b: stloc.1
에 발생합니다
monodis
나에게 (내가 방출 내보낼 것과 일치)이 CIL 결과를 제공합니다.
팝업 설명으로 stloc.1
을 바꾸려고했습니다. 그럴 때 오류가 발생합니다. IL_0019: ret
저는 이것이 왜 이런 식으로 행동하는지 잘 모릅니다. 어떤 아이디어?
추가 정보 :
IScope
는BlockScope
이IScope
Function
가public IScope Scope { get; private set; }
- 내가 모노 2.6.7 (뵘, AMD64)와 모노 모두이 오류가 구현하는 인터페이스입니다 2.8 (Boehm with typed GC and Parallel Mark, AMD64)