From f32e130ceaf90ea7a852225827844df0db028ba3 Mon Sep 17 00:00:00 2001 From: John Salem Date: Mon, 1 Jun 2020 09:49:47 -0700 Subject: [PATCH 1/2] don't use process var in async readers --- src/coreclr/tests/src/tracing/eventpipe/reverse/reverse.cs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/coreclr/tests/src/tracing/eventpipe/reverse/reverse.cs b/src/coreclr/tests/src/tracing/eventpipe/reverse/reverse.cs index 27a8d6a1dafef1..6fa09b63ed281d 100644 --- a/src/coreclr/tests/src/tracing/eventpipe/reverse/reverse.cs +++ b/src/coreclr/tests/src/tracing/eventpipe/reverse/reverse.cs @@ -60,11 +60,13 @@ public static async Task RunSubprocess(string serverName, Func beforeExecu Logger.logger.Log($"running sub-process: {process.StartInfo.FileName} {process.StartInfo.Arguments}"); + 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 +74,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}"); } }); From 2adbedd7a33d83da4f3a24f55949c9e35bbc7bc9 Mon Sep 17 00:00:00 2001 From: John Salem Date: Wed, 3 Jun 2020 15:04:52 -0700 Subject: [PATCH 2/2] Add comment --- src/coreclr/tests/src/tracing/eventpipe/reverse/reverse.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/coreclr/tests/src/tracing/eventpipe/reverse/reverse.cs b/src/coreclr/tests/src/tracing/eventpipe/reverse/reverse.cs index 6fa09b63ed281d..ec22e210c4fbf0 100644 --- a/src/coreclr/tests/src/tracing/eventpipe/reverse/reverse.cs +++ b/src/coreclr/tests/src/tracing/eventpipe/reverse/reverse.cs @@ -60,6 +60,8 @@ 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) =>