Description
Description
While writing my own event pipe reader, I noticed that some event metadata have an empty event name and don't define any field descriptions. It seems like all these events are under the Microsoft-Windows-DotNETRuntimeRundown
provider.
Reproduction Steps
Write a random .NET program, for example
while (true)
{
await Task.Run(() => { });
await Task.Delay(50);
}
and collect a trace, for example
dotnet trace collect -p $PID --providers='System.Threading.Tasks.TplEventSource:0x1:4'
Now if you look for the field strings in the nettrace file
$ grep -ao 'O.r.i.g.i.n.a.t.i.n.g.T.a.s.k.S.c.h.e.d.u.l.e.r.I.D' Test.exe_20231229_192905.nettrace
OriginatingTaskSchedulerID
OriginatingTaskSchedulerID
OriginatingTaskSchedulerID
$ grep -ao 'M.e.t.h.o.d.S.t.a.r.t.A.d.d.r.e.s.s' Test.exe_20231229_192905.nettrace
The field OriginatingTaskSchedulerID
from an event of the TplEventSource
provider is present but the MethodStartAddress
field of the Microsoft-Windows-DotNETRuntimeRundown/MethodLoadUnloadRundown
event is not.
Expected behavior
I'm expecting the nettrace file to self-contain all metadata to be parsed. Especially, all event metadata with their fields in the MetadataBlock objects so the events in EventBlock objects can be parsed.
Actual behavior
In my custom event pipe parser I can see that the Microsoft-Windows-DotNETRuntimeRundown
events don't have an event name and field descriptors.
Regression?
No response
Known Workarounds
I think PerfView hardcodes the Microsoft-Windows-DotNETRuntimeRundown
field descriptors instead of reading them from the nettrace file. This is not future proof in the case where a new version of an event is introduced.
Configuration
- .NET 8.0
- Windows
- x64
Other information
No response