Skip to content

Possible Race Condition in v8 Telemetry #1357

@martincostello

Description

@martincostello

While doing some work on #1144, I had a test run where I got this exception in the same test in two different TFMs in a single test run. Re-running the tests didn't repro it, and I haven't seen it since.

Maybe there's an edge case race-condition somewhere?

 Polly.Core.Tests.Hedging.HedgingResilienceStrategyTests.ExecuteAsync_EnsurePrimaryTaskCancelled_Ok
   Source: HedgingResilienceStrategyTests.cs line 263
   Duration: 7 ms

  Message: 
System.IndexOutOfRangeException : Index was outside the bounds of the array.

  Stack Trace: 
List`1.Add(T item)
CallbackDiagnosticSource.Write(String name, Object value) line 125
ResilienceStrategyTelemetry.Report[TArgs,TResult](String eventName, OutcomeArguments`2 args) line 74
TelemetryUtil.ReportExecutionAttempt[TResult](ResilienceStrategyTelemetry telemetry, ResilienceContext context, Outcome`1 outcome, Int32 attempt, TimeSpan executionTime, Boolean handled) line 37
<UpdateOutcomeAsync>d__54.MoveNext() line 230
--- End of stack trace from previous location where exception was thrown ---
ExceptionDispatchInfo.Throw()
TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
ConfiguredTaskAwaiter.GetResult()
<ExecutePrimaryActionAsync>d__53`1.MoveNext() line 222
--- End of stack trace from previous location where exception was thrown ---
ExceptionDispatchInfo.Throw()
TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
ConfiguredTaskAwaiter.GetResult()
<DisposeAsync>d__23.MoveNext() line 96
--- End of stack trace from previous location where exception was thrown ---
ExceptionDispatchInfo.Throw()
TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
ConfiguredValueTaskAwaiter.GetResult()
<ExecuteCallbackAsync>d__19`1.MoveNext() line 60
--- End of stack trace from previous location where exception was thrown ---
ExceptionDispatchInfo.Throw()
TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
ValueTask`1.get_Result()
<<ConvertValueTask>g__ConvertValueTaskAsync|4_0>d`1.MoveNext() line 76
--- End of stack trace from previous location where exception was thrown ---
ExceptionDispatchInfo.Throw()
TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
ValueTask`1.get_Result()
<ExecuteAsync>d__10`1.MoveNext() line 169
--- End of stack trace from previous location where exception was thrown ---
ExceptionDispatchInfo.Throw()
TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
ValueTask`1.get_Result()
<ExecuteAsync_EnsurePrimaryTaskCancelled_Ok>d__26.MoveNext() line 293
--- End of stack trace from previous location where exception was thrown ---
ExceptionDispatchInfo.Throw()
TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
--- End of stack trace from previous location where exception was thrown ---
ExceptionDispatchInfo.Throw()
TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
--- End of stack trace from previous location where exception was thrown ---
ExceptionDispatchInfo.Throw()
TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugv8Issues related to the new version 8 of the Polly library.

    Type

    No type

    Projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions