You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The test was using RemoteExecutor.Invoke(Action<string, string, string, string> method, ...) since there is no overload that takes Func<string, string, string, string, Task> (only one with three strings) and that means it's becoming an async void.
The delegate that gets invoked will return the moment the method awaits something not yet completed, so now there's a race condition, where RemoteExecutor.Invoke thinks all work is done, but there's still likely work running and it'll start doing all its cleanup stuff like killing child processes.
Fix by removing one string parameter so it picks the correct overload. I'll also open an arcade PR to add an overload with four string arguments.
The test was using `RemoteExecutor.Invoke(Action<string, string, string, string> method, ...)` since there is no overload that takes `Func<string, string, string, string, Task>` (only one with three strings) so we weren't awaiting the Task.
Fix by removing one string parameter so it picks the correct overload.
Fixesdotnet#74667
Tagging subscribers to this area: @dotnet/ncl
See info in area-owners.md if you want to be subscribed.
Issue Details
The test was using RemoteExecutor.Invoke(Action<string, string, string, string> method, ...) since there is no overload that takes Func<string, string, string, string, Task> (only one with three strings) so we weren't awaiting the Task.
Fix by removing one string parameter so it picks the correct overload.
The delegate that gets invoked will return the moment the method awaits something not yet completed, so now there's a race condition, where RemoteExecutor.Invoke thinks all work is done, but there's still likely work running and it'll start doing all its cleanup stuff like killing child processes.
For the parent, that means the child is short-lived. It shouldn't cause a situation where the child goes missing (Error while reaping child. errno = 10).
This could be triggering the issue, but it is not the root cause.
In dotnet/runtime#74994 we hit an issue because a test was inadvertently using `RemoteExecutor.Invoke(Action<string, string, string, string> method, ...)` since there was no overload that takes `Func<string, string, string, string, Task>` (only one with three strings) and that means it's becoming an async void (bad!).
This PR makes sure we have a matching number of overloads that take Func with the same number of arguments as the one that takes Action.
Since there was a bit of a mismatch (one overload took five arguments), I made the overloads consistent so that everyone takes five args.
ghost
locked as resolved and limited conversation to collaborators
Oct 5, 2022
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
The test was using
RemoteExecutor.Invoke(Action<string, string, string, string> method, ...)since there is no overload that takesFunc<string, string, string, string, Task>(only one with three strings) and that means it's becoming an async void.The delegate that gets invoked will return the moment the method awaits something not yet completed, so now there's a race condition, where
RemoteExecutor.Invokethinks all work is done, but there's still likely work running and it'll start doing all its cleanup stuff like killing child processes.Fix by removing one string parameter so it picks the correct overload. I'll also open an arcade PR to add an overload with four string arguments.
Fixes#74667