Harmony icon indicating copy to clipboard operation
Harmony copied to clipboard

Upgrading to .NET 10 and Harmony 2.4.2 causes an error when debugging in Debug configuration

Open ImoutoChan opened this issue 2 months ago • 2 comments

Describe the bug After upgrading to .NET 10 and updating the package to <PackageVersion Include="Lib.Harmony" Version="2.4.2"/>, starting a debug session using the Debug configuration in Rider results in the following exception:

System.ExecutionEngineException: Exception of type 'System.ExecutionEngineException' was thrown

This exception contains no stack trace. However, the console outputs the following error:

Fatal error.
Internal CLR error. (0x80131506)
   at MonoMod.Core.Interop.CoreCLR+V60.InvokeCompileMethod(IntPtr, IntPtr, IntPtr, CORINFO_METHOD_INFO*, UInt32, Byte**, UInt32*)
   at MonoMod.Core.Platforms.Runtimes.Core60Runtime+JitHookDelegateHolder.CompileMethodHook(IntPtr, IntPtr, CORINFO_METHOD_INFO*, UInt32, Byte**, UInt32*)
   at System.Runtime.CompilerServices.StaticsHelpers.<GetThreadStaticsByIndex>g____PInvoke|0_0(System.Runtime.CompilerServices.ByteRefOnStack, Int32, Int32)
   at System.Runtime.CompilerServices.StaticsHelpers.GetThreadStaticsByIndex(System.Runtime.CompilerServices.ByteRefOnStack, Int32, Boolean)
   at System.Runtime.CompilerServices.StaticsHelpers.GetGCThreadStaticsByIndexSlow(Int32)
   at System.Runtime.CompilerServices.StaticsHelpers.GetThreadLocalStaticBaseByIndex(Int32, Boolean)
   at System.Runtime.CompilerServices.StaticsHelpers.GetGCThreadStaticBase(System.Runtime.CompilerServices.MethodTable*)
   at System.Windows.Threading.Dispatcher..ctor()
   at System.Windows.Threading.Dispatcher.get_CurrentDispatcher()
   at System.Windows.Freezable..ctor()
   at System.Windows.Media.Imaging.BitmapSource..ctor(Boolean)
   at [my code]
   at System.Runtime.CompilerServices.AsyncMethodBuilderCore.Start[[System.__Canon, System.Private.CoreLib, Version=10.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]](System.__Canon ByRef)
   at [my code]
   at System.Threading.Tasks.Task`1[[System.__Canon, System.Private.CoreLib, Version=10.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].InnerInvoke()
   at System.Threading.ExecutionContext.RunFromThreadPoolDispatchLoop(System.Threading.Thread, System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)
   at System.Threading.Tasks.Task.ExecuteWithThreadLocal(System.Threading.Tasks.Task ByRef, System.Threading.Thread)
   at System.Threading.ThreadPoolWorkQueue.Dispatch()
   at System.Threading.PortableThreadPool+WorkerThread.WorkerThreadStart()
   at System.Threading.Thread.StartCallback()

Runtime environment (please complete the following information):

  • OS: Windows 10, 64bit
  • .NET version 10
  • Harmony version 2.4.2

Additional context

  • Everything works fine without debugging even in Debug configuration (dotnet run -c Debug).
  • Debugging session in the Release configuration profile works fine as well.

I tried replacing: <PackageVersion Include="Lib.Harmony" Version="2.4.2"/> with

<PackageVersion Include="Lib.Harmony.Thin" Version="2.4.1" />
<PackageVersion Include="MonoMod.Core" Version="1.3.3" />

and it also helped.

So it only reproduces for me in Debug configuration with debugger attached from the start

ImoutoChan avatar Nov 16 '25 18:11 ImoutoChan

Lib.Harmony is the same as your expanded version but merged with the only merge tool that currently works. Unfortunately that tool seem to produce side effects and I have no replacement for it.

This is a WONTFIX for now.

pardeike avatar Nov 17 '25 07:11 pardeike

I let this stay open for others to read. Maybe @nike4613 can say something regarding MonoMod.Core in this case?

pardeike avatar Nov 17 '25 07:11 pardeike