Fix race in setting results in SOS runner (#4745)
authorJuan Hoyos <19413848+hoyosjs@users.noreply.github.com>
Tue, 18 Jun 2024 05:04:33 +0000 (22:04 -0700)
committerGitHub <noreply@github.com>
Tue, 18 Jun 2024 05:04:33 +0000 (05:04 +0000)
src/SOS/SOS.UnitTests/SOSRunner.cs

index 76fcfad6414ff7a436b2d7f4dde50a3baf94f0d5..9f3aee8dcba574a5a3ef31ceac462246f03b6ac6 100644 (file)
@@ -1586,8 +1586,12 @@ public class SOSRunner : IDisposable
 
         private void AddTask()
         {
-            _taskSource = new TaskCompletionSource<CommandResult>();
-            _taskQueue.Add(_taskSource.Task);
+            TaskCompletionSource<CommandResult> tcs = new(TaskCreationOptions.RunContinuationsAsynchronously);
+            lock (this)
+            {
+                _taskQueue.Add(tcs.Task);
+                _taskSource = tcs;
+            }
         }
 
         public async Task<bool> WaitForCommandPrompt()