diff --git a/src/coreclr/tests/src/tracing/eventpipe/reverse/reverse.cs b/src/coreclr/tests/src/tracing/eventpipe/reverse/reverse.cs index 27a8d6a1dafef1..ec22e210c4fbf0 100644 --- a/src/coreclr/tests/src/tracing/eventpipe/reverse/reverse.cs +++ b/src/coreclr/tests/src/tracing/eventpipe/reverse/reverse.cs @@ -60,11 +60,15 @@ public static async Task RunSubprocess(string serverName, Func beforeExecu Logger.logger.Log($"running sub-process: {process.StartInfo.FileName} {process.StartInfo.Arguments}"); + // use this DateTime rather than process.StartTime since the async callbacks might + // not happen till after the process is no longer around. + DateTime subprocessStartTime = DateTime.Now; + process.OutputDataReceived += new DataReceivedEventHandler((s,e) => { if (!string.IsNullOrEmpty(e.Data)) { - stdoutSb.Append($"\n\t{(DateTime.Now - process.StartTime).TotalSeconds,5:f1}s: {e.Data}"); + stdoutSb.Append($"\n\t{(DateTime.Now - subprocessStartTime).TotalSeconds,5:f1}s: {e.Data}"); } }); @@ -72,7 +76,7 @@ public static async Task RunSubprocess(string serverName, Func beforeExecu { if (!string.IsNullOrEmpty(e.Data)) { - stderrSb.Append($"\n\t{(DateTime.Now - process.StartTime).TotalSeconds,5:f1}s: {e.Data}"); + stderrSb.Append($"\n\t{(DateTime.Now - subprocessStartTime).TotalSeconds,5:f1}s: {e.Data}"); } });