dotnet / dotnet/diagnostics

[test failure] TestCounterMonitorSystemRuntimeMetricsCSV intermittently fails: System.IO.EndOfStreamException : Attempted to read past the end of the stream.

Open
#4,757 1 comment 0 reactions 0 assignees View on GitHub
Microsoft.Diagnostics.NETCore.Client testing
Dominant language
C++
Stars
1.3k
Forks
404
Avg merge
2d 3h
Merged PRs (30d)
38

Description

Failing test: `TestCounterMonitorSystemRuntimeMetricsCSV`
Environment: Ubuntu_22_04_x64_Release

Intermittent - seems like it may be a race condition in stopping processing:
```
System.InvalidOperationException : End of stream\n---- System.IO.EndOfStreamException : Attempted to read past the end of the stream.
at Microsoft.Diagnostics.Monitoring.EventPipe.EventPipeStreamProvider.ProcessEvents(DiagnosticsClient client, TimeSpan duration, Boolean resumeRuntime, CancellationToken cancellationToken) in /__w/1/s/src/Microsoft.Diagnostics.Monitoring.EventPipe/EventPipeStreamProvider.cs:line 86
at Microsoft.Diagnostics.Monitoring.EventPipe.DiagnosticsEventPipeProcessor.<>c__DisplayClass11_0.<b__1>d.MoveNext() in /__w/1/s/src/Microsoft.Diagnostics.Monitoring.EventPipe/DiagnosticsEventPipeProcessor.cs:line 56
--- End of stack trace from previous location ---
at Microsoft.Diagnostics.Monitoring.EventPipe.DiagnosticsEventPipeProcessor.StopProcessing() in /__w/1/s/src/Microsoft.Diagnostics.Monitoring.EventPipe/DiagnosticsEventPipeProcessor.cs:line 119
at Microsoft.Diagnostics.Monitoring.EventPipe.EventSourcePipeline`1.OnStop(CancellationToken token) in /__w/1/s/src/Microsoft.Diagnostics.Monitoring.EventPipe/EventSourcePipeline.cs:line 63
at Microsoft.Diagnostics.Monitoring.Pipeline.StopAsyncCore(CancellationToken token) in /__w/1/s/src/Microsoft.Diagnostics.Monitoring/Pipeline.cs:line 148
at Microsoft.Diagnostics.Monitoring.Pipeline.SafeExecuteTask(Func`1 acquireTask) in /__w/1/s/src/Microsoft.Diagnostics.Monitoring/Pipeline.cs:line 208
at Microsoft.Diagnostics.Tools.Counters.CounterMonitor.Collect(CancellationToken ct, List`1 counter_list, String counters, IConsole console, Int32 processId, Int32 refreshInterval, CountersExportFormat format, String output, String name, String diagnosticPort, Boolean resumeRuntime, Int32 maxHistograms, Int32 maxTimeSeries, TimeSpan duration) in /__w/1/s/src/Tools/dotnet-counters/CounterMonitor.cs:line 330
at DotnetCounters.UnitTests.CounterMonitorPayloadTests.<>c__DisplayClass15_1.<b__1>d.MoveNext() in /__w/1/s/src/tests/dotnet-counters/CounterMonitorPayloadTests.cs:line 209
--- End of stack trace from previous location ---
at CommonTestRunner.TestRunnerUtilities.ExecuteCollection(Task collectionTask, TestRunner testRunner, CancellationToken token, Func`2 waitForPipeline) in /__w/1/s/src/tests/CommonTestRunner/TestRunnerUtilities.cs:line 50
at CommonTestRunner.TestRunnerUtilities.ExecuteCollection(Func`2 executeCollection, TestRunner testRunner, CancellationToken token) in /__w/1/s/src/tests/CommonTestRunner/TestRunnerUtilities.cs:line 28
at DotnetCounters.UnitTests.CounterMonitorPayloadTests.GetCounterTrace(TestConfiguration configuration, List`1 counterList, String path, CountersExportFormat exportFormat, Func`1 CreateMetricComponents) in /__w/1/s/src/tests/dotnet-counters/CounterMonitorPayloadTests.cs:line 207
at DotnetCounters.UnitTests.CounterMonitorPayloadTests.GetCounterTrace(TestConfiguration configuration, List`1 counterList, String path, CountersExportFormat exportFormat, Func`1 CreateMetricComponents) in /__w/1/s/src/tests/dotnet-counters/CounterMonitorPayloadTests.cs:line 226
at DotnetCounters.UnitTests.CounterMonitorPayloadTests.GetCounterTraceCSV(TestConfiguration configuration, List`1 counterList) in /__w/1/s/src/tests/dotnet-counters/CounterMonitorPayloadTests.cs:line 172
at DotnetCounters.UnitTests.CounterMonitorPayloadTests.TestCounterMonitorSystemRuntimeMetricsCSV(TestConfiguration configuration) in /__w/1/s/src/tests/dotnet-counters/CounterMonitorPayloadTests.cs:line 84
--- End of stack trace from previous location ---
----- Inner Stack Trace -----
at Microsoft.Diagnostics.NETCore.Client.StreamExtensions.ReadBytesAsync(Stream stream, Int32 length, CancellationToken cancellationToken) in /__w/1/s/src/Microsoft.Diagnostics.NETCore.Client/StreamExtensions.cs:line 23
at Microsoft.Diagnostics.NETCore.Client.IpcHeader.ParseAsync(Stream stream, CancellationToken cancellationToken) in /__w/1/s/src/Microsoft.Diagnostics.NETCore.Client/DiagnosticsIpc/IpcHeader.cs:line 69
at Microsoft.Diagnostics.NETCore.Client.IpcMessage.ParseAsync(Stream stream, CancellationToken cancellationToken) in /__w/1/s/src/Microsoft.Diagnostics.NETCore.Client/DiagnosticsIpc/IpcMessage.cs:line 126
at Microsoft.Diagnostics.NETCore.Client.IpcClient.SendMessageGetContinuationAsync(IpcEndpoint endpoint, IpcMessage message, CancellationToken cancellationToken) in /__w/1/s/src/Microsoft.Diagnostics.NETCore.Client/DiagnosticsIpc/IpcClient.cs:line 83
at Microsoft.Diagnostics.NETCore.Client.EventPipeSession.StartAsync(IpcEndpoint endpoint, EventPipeSessionConfiguration config, CancellationToken cancellationToken) in /__w/1/s/src/Microsoft.Diagnostics.NETCore.Client/DiagnosticsClient/EventPipeSession.cs:line 52
at Microsoft.Diagnostics.Monitoring.EventPipe.EventPipeStreamProvider.ProcessEvents(DiagnosticsClient client, TimeSpan duration, Boolean resumeRuntime, CancellationToken cancellationToken) in /__w/1/s/src/Microsoft.Diagnostics.Monitoring.EventPipe/EventPipeStreamProvider.cs:line 40
```

https://github.com/dotnet/diagnostics/pull/4751 - [test result](https://dev.azure.com/dnceng-public/public/_build/results?buildId=718372&view=ms.vss-test-web.build-test-results-tab&runId=18003516&paneView=debug&resultId=100061)

```kusto
AzureDevOpsTests
| where Repository == "dotnet/diagnostics"
| where Message contains "EndOfStreamException"
```

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.