Bug #69049 [Fbk]: Unable to get output of slow process
| From: | ab@php.net | Date: | Fri, 13 Feb 2015 13:49:53 +0000 |
| Subject: | Bug #69049 [Fbk]: Unable to get output of slow process | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-190667@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=69049&edit=1
ID: 69049
Updated by: ab@php.net
Reported by: aserbulov at parallels dot com
Summary: Unable to get output of slow process
Status: Feedback
Type: Bug
Package: Streams related
Operating System: Windows
PHP Version: 5.5.21
Block user comment: N
Private report: N
New Comment:
@aserbulov, yeah, however in practice, if one tries to do the blocking read from the deadlocked pipe
- here we are. Increasing timeout will probably add the idle circles in the simple cases though.
Heh.
Previous Comments:
------------------------------------------------------------------------
[2015-02-13 13:44:02] ab@php.net
But what is actually missing here is the blocking read. After the first circle it's
errno 2, ret 0, eof 1
Because nothing was available in the pipe ... as we emulate the blocking read now, it might make
sense to just increase the timeout.
Cheers.
------------------------------------------------------------------------
[2015-02-13 13:42:50] aserbulov at parallels dot com
The patch https://bugs.php.net/patch-display.php?bug_id=69049&patch=stream_oef.diff&revision=latest
does not fix particular issue - process hangs forever.
But the idea is correct - set eof to true only if end of the pipe is reached.
------------------------------------------------------------------------
[2015-02-13 13:37:30] ab@php.net
With your patch, the snippet doesn't terminate.
Thanks.
------------------------------------------------------------------------
[2015-02-13 12:37:33] aserbulov at parallels dot com
Look at https://bugs.php.net/patch-display.php?bug_id=69049&patch=stream_oef.diff&revision=latest
It should fix particular issue...
------------------------------------------------------------------------
[2015-02-13 11:40:16] ab@php.net
@aserbulov, there are multiple issues with proc_open
- blocking read as file descriptors on windows don't support async, it's not possible to
select()
- internal streams buffering, say you write 1024 but process.php outs only 4 bytes
- pipe buffer size which is way to small on windows, that leads to deadlocks
At the end line - it is much more likely to get a proc_open() call hanging before that patch. Not
mentioning the cases where process.php (or any counterpart) dies leaking the descriptors - then
we've no chance to check it at all. Now we discovered that there is this side effect, however
please keep in mind that this topic is way too complicated. For now, maybe it'd make sense to
increase the internal retry time to something like 60 seconds.
Cheers.
------------------------------------------------------------------------
The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
https://bugs.php.net/bug.php?id=69049
--
Edit this bug report at https://bugs.php.net/bug.php?id=69049&edit=1