Skip to content

[ProfilerAPI] No more ModuleLoadFinished callbacks for dynamic modules #76016

@ww898

Description

@ww898

Hi there,

.NET 7.0 rc1 doesn't send ICorProfilerCallback::ModuleLoadFinished for dynamic modules any more. .NET 6.0.9 works properly.

Example:

using System;
using System.Reflection;
using System.Reflection.Emit;

namespace DynamicAssemblyTestProgram
{
  internal static class DynamicAssemblyTestProgram
  {
    internal static void Main()
    {
      var type = AssemblyBuilder.DefineDynamicAssembly(new AssemblyName("TestAssembly"), AssemblyBuilderAccess.Run)
        .DefineDynamicModule("TestModule")
        .DefineType("TestClass", TypeAttributes.Public)
        .CreateType();
      var obj = Activator.CreateInstance(type);
      if (obj == null)
        throw new NullReferenceException();

      Console.WriteLine("Done!");
      Console.ReadKey();
      GC.KeepAlive(obj);
    }
  }
}

Profiler log, see 00007FFC14200110:

...
0000E598 1 00000217541FB1C0 MProf::ModuleLoadStarted mid=00007FFC13D34000
0000E598 1 00000217541FB1C0 MDG2::ModuleLoadStarted mid=00007FFC13D34000
0000E598 1 00000217541FB1C0 MDG2::ModuleLoadStarted mid=00007FFC13D34000 res=ok mdi=1
0000E598 1 00000217541FB1C0 MProf::ModuleLoadFinished mid=00007FFC13D34000 hr=00000000
0000E598 1 00000217541FB1C0 MDG2::ModuleLoadFinished mid=00007FFC13D34000 hr=00000000 addr=00007FFC72D60000 flags=Dnycrfw mname='C:\Users\Mikhail.Pilin\Downloads\DynamicAssemblyTestProgram\DynamicAssemblyTestProgram\bin\Release\net7.0\win-x64\publish\System.Private.CoreLib.dll'
0000E598 1 00000217541FB1C0 MDG2::CollectIds mid=00007FFC13D34000 res=ok_root_module
0000E598 1 00000217541FB1C0 MDG2::ModuleLoadFinished mid=00007FFC13D34000 res=ok_reuse mdi=1
0000E598 1 00000217541FB1C0 MDG2::Map mid=00007FFC13D34000 res=ok_memory mname='C:\Users\Mikhail.Pilin\Downloads\DynamicAssemblyTestProgram\DynamicAssemblyTestProgram\bin\Release\net7.0\win-x64\publish\System.Private.CoreLib.dll'
0000E598 1 00000217541FB1C0 MDG2::TryWrite mid=00007FFC13D34000 mdi=1 res=image
0000E598 1 00000217541FB1C0 BProf::ModuleAttachedToAssembly mid=00007FFC13D34000 aid=00000217541F6B50
0000E598 1 00000217541FB1C0 GCCQ::Activate
0000D378 1 0000021757E18880 MDG2::FlushMetadata
0000D378 1 0000021757E18880 MDG2::FlushMetadata res=ok
0000E598 1 00000217541FB1C0 MProf::ModuleLoadStarted mid=00007FFC13FF10B0
0000E598 1 00000217541FB1C0 MDG2::ModuleLoadStarted mid=00007FFC13FF10B0
0000E598 1 00000217541FB1C0 MDG2::ModuleLoadStarted mid=00007FFC13FF10B0 res=ok mdi=2
0000E598 1 00000217541FB1C0 MProf::ModuleLoadFinished mid=00007FFC13FF10B0 hr=00000000
0000E598 1 00000217541FB1C0 MDG2::ModuleLoadFinished mid=00007FFC13FF10B0 hr=00000000 addr=00000257ECA70000 flags=Dnycrfw mname='C:\Users\Mikhail.Pilin\Downloads\DynamicAssemblyTestProgram\DynamicAssemblyTestProgram\bin\Release\net7.0\win-x64\publish\DynamicAssemblyTestProgram.dll'
0000E598 1 00000217541FB1C0 MDG2::ModuleLoadFinished mid=00007FFC13FF10B0 res=ok_reuse mdi=2
0000E598 1 00000217541FB1C0 MDG2::Map mid=00007FFC13FF10B0 res=ok_memory mname='C:\Users\Mikhail.Pilin\Downloads\DynamicAssemblyTestProgram\DynamicAssemblyTestProgram\bin\Release\net7.0\win-x64\publish\DynamicAssemblyTestProgram.dll'
0000E598 1 00000217541FB1C0 MDG2::TryWrite mid=00007FFC13FF10B0 mdi=2 res=image
0000E598 1 00000217541FB1C0 BProf::ModuleAttachedToAssembly mid=00007FFC13FF10B0 aid=00000217541F82F0
0000E598 1 00000217541FB1C0 MProf::ModuleLoadStarted mid=00007FFC13FF2BE8
0000E598 1 00000217541FB1C0 MDG2::ModuleLoadStarted mid=00007FFC13FF2BE8
0000E598 1 00000217541FB1C0 MDG2::ModuleLoadStarted mid=00007FFC13FF2BE8 res=ok mdi=3
0000E598 1 00000217541FB1C0 MProf::ModuleLoadFinished mid=00007FFC13FF2BE8 hr=00000000
0000E598 1 00000217541FB1C0 MDG2::ModuleLoadFinished mid=00007FFC13FF2BE8 hr=00000000 addr=00000257ECA80000 flags=Dnycrfw mname='C:\Users\Mikhail.Pilin\Downloads\DynamicAssemblyTestProgram\DynamicAssemblyTestProgram\bin\Release\net7.0\win-x64\publish\System.Runtime.dll'
0000E598 1 00000217541FB1C0 MDG2::ModuleLoadFinished mid=00007FFC13FF2BE8 res=ok_reuse mdi=3
0000E598 1 00000217541FB1C0 MDG2::Map mid=00007FFC13FF2BE8 res=ok_memory mname='C:\Users\Mikhail.Pilin\Downloads\DynamicAssemblyTestProgram\DynamicAssemblyTestProgram\bin\Release\net7.0\win-x64\publish\System.Runtime.dll'
0000E598 1 00000217541FB1C0 MDG2::TryWrite mid=00007FFC13FF2BE8 mdi=3 res=image
0000E598 1 00000217541FB1C0 BProf::ModuleAttachedToAssembly mid=00007FFC13FF2BE8 aid=00000217541F7F30
0000E598 1 00000217541FB1C0 MProf::ModuleLoadStarted mid=00007FFC141B5B18
0000E598 1 00000217541FB1C0 MDG2::ModuleLoadStarted mid=00007FFC141B5B18
0000E598 1 00000217541FB1C0 MDG2::ModuleLoadStarted mid=00007FFC141B5B18 res=ok mdi=4
0000E598 1 00000217541FB1C0 MProf::ModuleLoadFinished mid=00007FFC141B5B18 hr=00000000
0000E598 1 00000217541FB1C0 MDG2::ModuleLoadFinished mid=00007FFC141B5B18 hr=00000000 addr=00000257ECAF0000 flags=Dnycrfw mname='C:\Users\Mikhail.Pilin\Downloads\DynamicAssemblyTestProgram\DynamicAssemblyTestProgram\bin\Release\net7.0\win-x64\publish\System.Reflection.Emit.dll'
0000E598 1 00000217541FB1C0 MDG2::ModuleLoadFinished mid=00007FFC141B5B18 res=ok_reuse mdi=4
0000E598 1 00000217541FB1C0 MDG2::Map mid=00007FFC141B5B18 res=ok_memory mname='C:\Users\Mikhail.Pilin\Downloads\DynamicAssemblyTestProgram\DynamicAssemblyTestProgram\bin\Release\net7.0\win-x64\publish\System.Reflection.Emit.dll'
0000E598 1 00000217541FB1C0 MDG2::TryWrite mid=00007FFC141B5B18 mdi=4 res=image
0000E598 1 00000217541FB1C0 BProf::ModuleAttachedToAssembly mid=00007FFC141B5B18 aid=00000257ECF0E780
0000E598 1 00000217541FB1C0 MProf::ModuleLoadStarted mid=00007FFC141B6678
0000E598 1 00000217541FB1C0 MDG2::ModuleLoadStarted mid=00007FFC141B6678
0000E598 1 00000217541FB1C0 MDG2::ModuleLoadStarted mid=00007FFC141B6678 res=ok mdi=5
0000E598 1 00000217541FB1C0 MProf::ModuleLoadFinished mid=00007FFC141B6678 hr=00000000
0000E598 1 00000217541FB1C0 MDG2::ModuleLoadFinished mid=00007FFC141B6678 hr=00000000 addr=00007FFCECEB0000 flags=Dnycrfw mname='C:\Users\Mikhail.Pilin\Downloads\DynamicAssemblyTestProgram\DynamicAssemblyTestProgram\bin\Release\net7.0\win-x64\publish\System.Console.dll'
0000E598 1 00000217541FB1C0 MDG2::ModuleLoadFinished mid=00007FFC141B6678 res=ok_reuse mdi=5
0000E598 1 00000217541FB1C0 MDG2::Map mid=00007FFC141B6678 res=ok_memory mname='C:\Users\Mikhail.Pilin\Downloads\DynamicAssemblyTestProgram\DynamicAssemblyTestProgram\bin\Release\net7.0\win-x64\publish\System.Console.dll'
0000E598 1 00000217541FB1C0 MDG2::TryWrite mid=00007FFC141B6678 mdi=5 res=image
0000E598 1 00000217541FB1C0 BProf::ModuleAttachedToAssembly mid=00007FFC141B6678 aid=00000257ECF0D520
0000E598 1 00000217541FB1C0 MProf::ModuleLoadStarted mid=00007FFC14200110
0000E598 1 00000217541FB1C0 MDG2::ModuleLoadStarted mid=00007FFC14200110
0000E598 1 00000217541FB1C0 MDG2::ModuleLoadStarted mid=00007FFC14200110 res=ok mdi=6
0000E598 1 00000217541FB1C0 MProf::ModuleLoadStarted mid=00007FFC14205710
0000E598 1 00000217541FB1C0 MDG2::ModuleLoadStarted mid=00007FFC14205710
0000E598 1 00000217541FB1C0 MDG2::ModuleLoadStarted mid=00007FFC14205710 res=ok mdi=7
0000E598 1 00000217541FB1C0 MProf::ModuleLoadFinished mid=00007FFC14205710 hr=00000000
0000E598 1 00000217541FB1C0 MDG2::ModuleLoadFinished mid=00007FFC14205710 hr=00000000 addr=00007FFCCAC10000 flags=Dnycrfw mname='C:\Users\Mikhail.Pilin\Downloads\DynamicAssemblyTestProgram\DynamicAssemblyTestProgram\bin\Release\net7.0\win-x64\publish\System.Threading.dll'
0000E598 1 00000217541FB1C0 MDG2::ModuleLoadFinished mid=00007FFC14205710 res=ok_reuse mdi=7
0000E598 1 00000217541FB1C0 MDG2::Map mid=00007FFC14205710 res=ok_memory mname='C:\Users\Mikhail.Pilin\Downloads\DynamicAssemblyTestProgram\DynamicAssemblyTestProgram\bin\Release\net7.0\win-x64\publish\System.Threading.dll'
0000E598 1 00000217541FB1C0 MDG2::TryWrite mid=00007FFC14205710 mdi=7 res=image
0000E598 1 00000217541FB1C0 BProf::ModuleAttachedToAssembly mid=00007FFC14205710 aid=00000257ECF0DE20
0000E598 1 00000217541FB1C0 MProf::ModuleLoadStarted mid=00007FFC14208FF8
0000E598 1 00000217541FB1C0 MDG2::ModuleLoadStarted mid=00007FFC14208FF8
0000E598 1 00000217541FB1C0 MDG2::ModuleLoadStarted mid=00007FFC14208FF8 res=ok mdi=8
0000E598 1 00000217541FB1C0 MProf::ModuleLoadFinished mid=00007FFC14208FF8 hr=00000000
0000E598 1 00000217541FB1C0 MDG2::ModuleLoadFinished mid=00007FFC14208FF8 hr=00000000 addr=00000257ECB20000 flags=Dnycrfw mname='C:\Users\Mikhail.Pilin\Downloads\DynamicAssemblyTestProgram\DynamicAssemblyTestProgram\bin\Release\net7.0\win-x64\publish\System.Text.Encoding.Extensions.dll'
0000E598 1 00000217541FB1C0 MDG2::ModuleLoadFinished mid=00007FFC14208FF8 res=ok_reuse mdi=8
0000E598 1 00000217541FB1C0 MDG2::Map mid=00007FFC14208FF8 res=ok_memory mname='C:\Users\Mikhail.Pilin\Downloads\DynamicAssemblyTestProgram\DynamicAssemblyTestProgram\bin\Release\net7.0\win-x64\publish\System.Text.Encoding.Extensions.dll'
0000E598 1 00000217541FB1C0 MDG2::TryWrite mid=00007FFC14208FF8 mdi=8 res=image
0000E598 1 00000217541FB1C0 BProf::ModuleAttachedToAssembly mid=00007FFC14208FF8 aid=00000257ECF0D340
0000E598 1 00000217541FB1C0 MProf::ModuleLoadStarted mid=00007FFC1420A0E0
0000E598 1 00000217541FB1C0 MDG2::ModuleLoadStarted mid=00007FFC1420A0E0
0000E598 1 00000217541FB1C0 MDG2::ModuleLoadStarted mid=00007FFC1420A0E0 res=ok mdi=9
0000E598 1 00000217541FB1C0 MProf::ModuleLoadFinished mid=00007FFC1420A0E0 hr=00000000
0000E598 1 00000217541FB1C0 MDG2::ModuleLoadFinished mid=00007FFC1420A0E0 hr=00000000 addr=00007FFD00FC0000 flags=Dnycrfw mname='C:\Users\Mikhail.Pilin\Downloads\DynamicAssemblyTestProgram\DynamicAssemblyTestProgram\bin\Release\net7.0\win-x64\publish\System.Runtime.InteropServices.dll'
0000E598 1 00000217541FB1C0 MDG2::ModuleLoadFinished mid=00007FFC1420A0E0 res=ok_reuse mdi=9
0000E598 1 00000217541FB1C0 MDG2::Map mid=00007FFC1420A0E0 res=ok_memory mname='C:\Users\Mikhail.Pilin\Downloads\DynamicAssemblyTestProgram\DynamicAssemblyTestProgram\bin\Release\net7.0\win-x64\publish\System.Runtime.InteropServices.dll'
0000E598 1 00000217541FB1C0 MDG2::TryWrite mid=00007FFC1420A0E0 mdi=9 res=image
0000E598 1 00000217541FB1C0 BProf::ModuleAttachedToAssembly mid=00007FFC1420A0E0 aid=00000257ECF0D5E0
0000E598 1 00000217541FB1C0 BProf::Shutdown

...

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions