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.
As you can see in the second commit, there was no proper handling for EINTR, which is the case of many race-condition portability issues of many Python projects (e.g. ros/ros_comm#1868, but not only).
Here EINTR is even in a way expected, since we start the process, and then signal it with SIGWINCH, which has a handler installed; it has only worked if we managed to signal it soon enough that it has not yet started reading.
The first commit also adds a great debug (which works at least for the case eliminated now, I verified it).
It looks as if GHA ran the Linux containers under some dirty MS supervisor, which favours new child processes over the parent process in access to the CPU time, unlike mainline Linux and the FreeBSD I tried (but whatever it is, it uncovered a bug, so good to not have it anymore).