Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Workaround flaky ProcessName behavior during process startup #111850

Merged
merged 1 commit into from
Jan 27, 2025

Conversation

jkotas
Copy link
Member

@jkotas jkotas commented Jan 27, 2025

Reenable long Process.Name test on OSX

Fixes #111460
Fixes #29330

@jkotas jkotas changed the title Workaround flaky behavior of Process.Name during process startup Workaround flaky ProcessName behavior during process startup Jan 27, 2025
Copy link
Member

@adamsitnik adamsitnik left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, thank you @jkotas !

@@ -2294,6 +2293,10 @@ public void LongProcessNamesAreSupported()

using (Process px = Process.Start(sleepCommandPathFileName, "600"))
{
// Reading of long process names is flaky during process startup and shutdown.
// Wait a bit to skip over the period where the ProcessName is not reliable.
Thread.Sleep(100);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Might it still be flaky even with a 100ms delay? Is there some way we could make it more deterministic, some callback we could subscribe to in order to be notified when moving forward is acceptable?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The proc file system used by underlying implementation reads the target process memory to extract the command line. I do not think there is any callback that we can subscribe to in the API implementation that tells us that the relevant memory in the target process contains the right information. Atypical or misbehaving processes may not have the information available for the whole process lifetime.

It was very rare to see this test to fail before the change. I would expect that 100ms delay should be good enough to make the rare failures to go away.

If we still see the test fail intermittently after this fix, we can output something in the child process and wait for the output in the test method. Once we see the output, we can be sure that the process is up and running and the command line is available.

@jkotas jkotas deleted the issue-111460 branch January 27, 2025 15:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
3 participants