From 3ff064cea33ffa30084a43bb04236a9842689eba Mon Sep 17 00:00:00 2001 From: Pranav K Date: Mon, 30 Jul 2018 14:51:38 -0700 Subject: [PATCH] Lock when reading \ writing process output Fixes #2516 --- .../IntegrationTests/MSBuildProcessManager.cs | 20 ++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/test/Microsoft.AspNetCore.Razor.Design.Test/IntegrationTests/MSBuildProcessManager.cs b/test/Microsoft.AspNetCore.Razor.Design.Test/IntegrationTests/MSBuildProcessManager.cs index 7feed83cec..93ee5030e7 100644 --- a/test/Microsoft.AspNetCore.Razor.Design.Test/IntegrationTests/MSBuildProcessManager.cs +++ b/test/Microsoft.AspNetCore.Razor.Design.Test/IntegrationTests/MSBuildProcessManager.cs @@ -51,6 +51,7 @@ namespace Microsoft.AspNetCore.Razor.Design.IntegrationTests }; var output = new StringBuilder(); + var outputLock = new object(); process.ErrorDataReceived += Process_ErrorDataReceived; process.OutputDataReceived += Process_OutputDataReceived; @@ -93,7 +94,14 @@ namespace Microsoft.AspNetCore.Razor.Design.IntegrationTests } process.WaitForExit(); - var result = new MSBuildResult(project, process.StartInfo.FileName, process.StartInfo.Arguments, process.ExitCode, output.ToString()); + + string outputString; + lock (outputLock) + { + outputString = output.ToString(); + } + + var result = new MSBuildResult(project, process.StartInfo.FileName, process.StartInfo.Arguments, process.ExitCode, outputString); return result; }); @@ -101,12 +109,18 @@ namespace Microsoft.AspNetCore.Razor.Design.IntegrationTests void Process_ErrorDataReceived(object sender, DataReceivedEventArgs e) { - output.AppendLine(e.Data); + lock (outputLock) + { + output.AppendLine(e.Data); + } } void Process_OutputDataReceived(object sender, DataReceivedEventArgs e) { - output.AppendLine(e.Data); + lock (outputLock) + { + output.AppendLine(e.Data); + } } } }