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
Prior to this PR there were two bugs:
One: we default initialized a boolean to indicate whether we were
piping child process output to a file or the wrapper's stdout.
Default-initializing this causes it to have undefined behavior, as
either true or false, which means the reader on the child process'
stdout/stderr pipes will spuriously close as they attempt to write
to a nonexistent file.
Two: The readers for the child process' stdout/stderr pipes can
potentially exit early if the child process hangs for a bit without
output.
This PR resolves both by:
- Adding an initialization value to the file check (false)
- Ensuring the child process terminates before either of the
stdout/stderr reader threads
- Ensuring the readers do not exit before the Execute class has
indicated the child has termianted
This PR adds a test that:
- Dumps 64k bytes of output to stdout
- expects the compiler wrapper to handle that and exit w/ success
without hanging
0 commit comments