Bug #74410 [Opn->Csd]: stream_select() is broken on Windows Nanoserver
| From: | mattficken@php.net | Date: | Tue, 11 Apr 2017 09:00:16 +0000 |
| Subject: | Bug #74410 [Opn->Csd]: stream_select() is broken on Windows Nanoserver | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-208470@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=74410&edit=1
ID: 74410
Updated by: mattficken@php.net
Reported by: mattficken@php.net
Summary: stream_select() is broken on Windows Nanoserver
-Status: Open
+Status: Closed
Type: Bug
Package: Streams related
Operating System: Windows Nanoserver
PHP Version: 7.1.3
Block user comment: N
Private report: N
New Comment:
Automatic comment on behalf of mattficken
Revision: http://git.php.net/?p=php-src.git;a=commit;h=76c9b584319b75b203c7e1ed7ed82b7bdbe4c442
Log: Fix #74410 by calling WaitForMultipleObjects() instead of MsgWaitForMultipleObjects()
Previous Comments:
------------------------------------------------------------------------
[2017-04-11 07:54:55] mattficken@php.net
Calling WaitForMultipleObjects() instead of MsgWaitForMultipleObjects() is the solution - so no
special action is needed for Nanoserver.
With this patch, stream_selct() still works on regular Windows and works again on Nanoserver.
Verified with run-tests.php.
------------------------------------------------------------------------
[2017-04-11 07:53:56] mattficken@php.net
Description:
------------
stream_select() is broken by recent updates to Nanoserver, the reduced resource edition of Windows
Server (Nanoserver supports x64 applications and enough windows APIs that PHP and most applications
run on it like any other edition of Windows, just with no GUI).
For standard streams, such as with proc_open from system_with_timeout() function in run-tests.php,
stream_select() will return
FALSE immediately regardless of any pending IO on those streams.
Ultimately, this is caused because recently Nanoserver deprecated/stubbed
MsgWaitForMultipleObjects(), which is used by php_select() which is used
by PHP on regular Windows and Nanoserver (which only support select() for sockets).
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=74410&edit=1