-
Notifications
You must be signed in to change notification settings - Fork 577
close(STDOUT) does not wait on MS-Windows #4106
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
Comments
From @gisleThe following program fails to work on Windows. The program open(STDOUT, qq(| perl -pe "sleep 1;")) || die;
print STDOUT "Hi\n" for 1..2;
close(STDOUT); Perl Info
|
From [email protected]I can reproduce the issue with 5.10 and 5.22. The problem randomly breaks OpenSSL builds. |
From [Unknown Contact. See original ticket]I can reproduce the issue with 5.10 and 5.22. The problem randomly breaks OpenSSL builds. |
Still present in v5.30.0 on Win 10. |
@gisle FYI your case was moved here. |
non-Windows perl keeps process ids for piped opens in the Lines 1092 to 1107 in 6c95af2
Windows being Windows, it does it's own thing, using a separate array This means by the time we get to At this point I don't know why Win32 uses its own array here. |
This duplicated the PL_fdpid already used by every other platform but didn't handle the transfer done when STD handles were reopened as pipes. Along with re-working win32_pclose() to behave much closer to Perl_my_pclose() from util.c and enabling the PID transfer done for STD handles on Win32, this fixes Perl#4106 Still needs tests.
This duplicated the PL_fdpid already used by every other platform but didn't handle the transfer done when STD handles were reopened as pipes. Along with re-working win32_pclose() to behave much closer to Perl_my_pclose() from util.c and enabling the PID transfer done for STD handles on Win32, this fixes Perl#4106 Still needs tests.
This includes an old test I wrote for pclose blocking on non-Win32 (which up until this fix used distinct pclose code from Win32) and test code for Perl#4106, which is the main issue being fixed by this patch series.
This duplicated the PL_fdpid already used by every other platform but didn't handle the transfer done when STD handles were reopened as pipes. Along with re-working win32_pclose() to behave much closer to Perl_my_pclose() from util.c and enabling the PID transfer done for STD handles on Win32, this fixes Perl#4106
This includes an old test I wrote for pclose blocking on non-Win32 (which up until this fix used distinct pclose code from Win32) and test code for Perl#4106, which is the main issue being fixed by this patch series.
This duplicated the PL_fdpid already used by every other platform but didn't handle the transfer done when STD handles were reopened as pipes. Along with re-working win32_pclose() to behave much closer to Perl_my_pclose() from util.c and enabling the PID transfer done for STD handles on Win32, this fixes Perl#4106
This duplicated the PL_fdpid already used by every other platform but didn't handle the transfer done when STD handles were reopened as pipes. Along with re-working win32_pclose() to behave much closer to Perl_my_pclose() from util.c and enabling the PID transfer done for STD handles on Win32, this fixes Perl#4106
Migrated from rt.perl.org#7142 (status was 'open')
Searchable as RT7142$
The text was updated successfully, but these errors were encountered: