opentelemetry-dotnet-instrumentation icon indicating copy to clipboard operation
opentelemetry-dotnet-instrumentation copied to clipboard

AccessViolation when running auto-instrumentation from nuget package

Open cabadam opened this issue 6 months ago • 1 comments

Bug Report

Symptom

Describe the bug I followed the instructions here: https://opentelemetry.io/docs/zero-code/net/nuget-packages/

When I run instrument.cmd .\OpenTelemetryAutoWorker.exe, an exception is logged:

Fatal error. System.AccessViolationException: Attempted to read or write protected memory. This is often an indication that other memory is corrupt. Repeat 2 times:

at OpenTelemetry.AutoInstrumentation.NativeMethods+Windows.AddInstrumentations(System.String, OpenTelemetry.AutoInstrumentation.NativeCallTargetDefinition[], Int32)

at OpenTelemetry.AutoInstrumentation.NativeMethods.AddInstrumentations(System.String, OpenTelemetry.AutoInstrumentation.NativeCallTargetDefinition[]) at OpenTelemetry.AutoInstrumentation.Instrumentation.RegisterBytecodeInstrumentations(Payload) at OpenTelemetry.AutoInstrumentation.Instrumentation.Initialize() at System.RuntimeMethodHandle.InvokeMethod(System.Object, Void**, System.Signature, Boolean) at System.Reflection.MethodBaseInvoker.InvokeWithNoArgs(System.Object, System.Reflection.BindingFlags) at System.Reflection.MethodBase.Invoke(System.Object, System.Object[]) at OpenTelemetry.AutoInstrumentation.Loader.Loader.TryLoadManagedAssembly() at OpenTelemetry.AutoInstrumentation.Loader.Loader..cctor() at OpenTelemetry.AutoInstrumentation.Loader.Loader..ctor() at System.RuntimeType.CreateInstanceDefaultCtor(Boolean, Boolean) at System.RuntimeType.CreateInstanceImpl(System.Reflection.BindingFlags, System.Reflection.Binder, System.Object[], System.Globalization.CultureInfo) at System.Reflection.Assembly.CreateInstance(System.String) at StartupHook.Initialize() at System.RuntimeMethodHandle.InvokeMethod(System.Object, Void**, System.Signature, Boolean) at System.Reflection.MethodBaseInvoker.InvokeWithNoArgs(System.Object, System.Reflection.BindingFlags) at System.StartupHookProvider.CallStartupHook(StartupHookNameOrPath) at System.StartupHookProvider.ProcessStartupHooks(System.String)

Expected behavior The application launches and runs.

Runtime environment (please complete the following information):

  • OpenTelemetry Automatic Instrumentation version: 1.7.0
  • OS: Windows 11
  • .NET version: .NET 8.0

Reproduce

A sample application that demonstrates the issue is here: A sample application that demonstrates the issue is here: https://github.com/cabadam/OpenTelemetryAutoWorker

Steps to reproduce the behavior:

  1. Create a new application using the Worker Service template.
  2. Add a Nuget reference to OpenTelemetry.AutoInstrumentation.
  3. Build the solution (it should succeed).
  4. Execute the instrumentation command on the compiled executable.

Logs attached: logs.zip

cabadam avatar Aug 13 '24 02:08 cabadam