-
Notifications
You must be signed in to change notification settings - Fork 5.2k
Closed
Description
Description
When publishing a net6.0 application using custom EventListener as as single file, the app crashes with:
Fatal error. System.AccessViolationException: Attempted to read or write protected memory. This is often an indication that other memory is corrupt.
at System.Diagnostics.Tracing.EventPipePayloadDecoder.DecodePayload(EventMetadata ByRef, System.ReadOnlySpan`1<Byte>)
at System.Diagnostics.Tracing.NativeRuntimeEventSource.ProcessEvent(UInt32, UInt32, System.DateTime, System.Guid, System.Guid, System.ReadOnlySpan`1<Byte>)
at System.Diagnostics.Tracing.EventPipeEventDispatcher.DispatchEventsToEventListeners()
at System.Threading.Tasks.Task.InnerInvoke()
at System.Threading.Tasks.Task+<>c.<.cctor>b__271_0(System.Object)
at System.Threading.ExecutionContext.RunInternal(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.Tasks.Task.ExecuteEntryUnsafe(System.Threading.Thread)
at System.Threading.Tasks.ThreadPoolTaskScheduler+<>c.<.cctor>b__10_0(System.Object)
at System.Threading.Thread.StartCallback()
Reproduction Steps
Program.cs
using System.Diagnostics.Tracing;
EventListener eventListener = new MyEventListener();
Console.WriteLine("Press any key to abort...");
// Do some stuff
for (int i = 1; i < int.MaxValue; i++)
{
if (Console.KeyAvailable)
{
break;
}
string a = new('a', i % 10000);
}
Console.WriteLine("Done.");
internal class MyEventListener : EventListener
{
protected override void OnEventSourceCreated(EventSource eventSource)
{
if (eventSource.Name.Equals("Microsoft-Windows-DotNETRuntime", StringComparison.Ordinal))
{
EnableEvents(eventSource, EventLevel.Informational, (EventKeywords)1);
}
}
protected override void OnEventWritten(EventWrittenEventArgs eventData)
{
Console.WriteLine($"Event written {eventData.EventId,3} {eventData.EventName ?? string.Empty}");
}
}FolderProfile.pubxml:
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration>Release</Configuration>
<Platform>Any CPU</Platform>
<PublishDir>bin\Release\net6.0\publish\win-x64\</PublishDir>
<PublishProtocol>FileSystem</PublishProtocol>
<TargetFramework>net6.0</TargetFramework>
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
<SelfContained>true</SelfContained>
<PublishSingleFile>True</PublishSingleFile>
<PublishReadyToRun>False</PublishReadyToRun>
<PublishTrimmed>False</PublishTrimmed>
</PropertyGroup>
</Project>Expected behavior
No exceptions, please. :)
Actual behavior
Exception, as described in the Description section.
Regression?
The same app worked in net5.0.
Known Workarounds
Don't use PublishSingleFile. :(
Configuration
.NET SDK (reflecting any global.json):
Version: 6.0.100
Commit: 9e8b04bbff
Runtime Environment:
OS Name: Windows
OS Version: 10.0.19043
OS Platform: Windows
RID: win10-x64
Base Path: C:\Program Files\dotnet\sdk\6.0.100\
Host (useful for support):
Version: 6.0.0
Commit: 4822e3c
Other information
No response
Metadata
Metadata
Assignees
Labels
Type
Projects
Status
No status