Bug #75854 [Wfx]: The mistake occurs when php7 executes as by command line as by webserver.
| From: | ab@php.net | Date: | Wed, 31 Jan 2018 19:34:57 +0000 |
| Subject: | Bug #75854 [Wfx]: The mistake occurs when php7 executes as by command line as by webserver. | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-213769@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=75854&edit=1
ID: 75854
Updated by: ab@php.net
Reported by: shamardin74 at rambler dot ru
Summary: The mistake occurs when php7 executes as by command
line as by webserver.
Status: Wont fix
Type: Bug
Package: Performance problem
Operating System: Windows 7 (32 bit)
PHP Version: 7.0.27
Block user comment: N
Private report: N
New Comment:
@shamardin74 just in the case you want to build yourself, what you could do perhaps is to patch the
CFLAGS. What you basically want is as per
https://msdn.microsoft.com/en-us/library/7t5yh4fd.aspx
either /arch:IA32 or /arch:SSE, depending on your old CPU capabilities. You can do that directly in
the Makefile, after the configure script is run. Though, please note, that you'll eventually
need to rebuild all the dependencies required, as the dependencies are likely to contain SSE2
instructions, too.
Thanks.
Previous Comments:
------------------------------------------------------------------------
[2018-01-29 17:42:51] ab@php.net
Ok, setting to won't fix now. As SSE2 builds are default for long already, suddenly changing
the build options would sure show performance impacts to existing apps. Also, in the light of the
latest security vulnerabilities regarding Meltdown and Spectre, the mitigation requires SSE2.
Thanks.
------------------------------------------------------------------------
[2018-01-27 03:22:42] mattficken@php.net
I test all php releases across Win7+, but all my hardware has SSE2 support (most are SSE4) so I
can't reproduce this issue.
PHP 7.0+ requires VC14. AFAIR VC14 requires SSE2, therefore supporting pre-SSE2 would be really
hard.
PHP 7.0+ requires Win7. While Win7 doesn't require SSE2, Win7 isn't supported anymore, so
fixing the issue for the few pre-SSE2 Win7 machines would still result in an unsupported situation
anyway.
Provided this issue is just not having SSE2 support, this issue should be closed as a
dont
fix. Maybe try PHP 5.6 or 5.5. Its not supported, but then neither is Win7 and probably other
apps on that machine.
------------------------------------------------------------------------
[2018-01-25 09:32:50] ab@php.net
Thanks for more info! If the processor is older than Pentium 4 or alike, then it's the movsd
instruction for sure. Please check with https://docs.microsoft.com/en-us/sysinternals/downloads/coreinfo
or any other suitable tool for more clarity.
The 32-bit builds supplied by windows.php.net already default to SSE2 starting with PHP 5.5
actually. No much issues was seen since then, however. If it's confirmed to be a pre SSE2
processor, then i'd say it's a won't fix case. I it won't be able to run many
other binaries produced last couple of years.
Thanks.
------------------------------------------------------------------------
[2018-01-24 12:32:45] shamardin74 at rambler dot ru
When run php-7.0.27 on windows 7 32-bit occurs the error in module php7ts.dll. This occurs in step
of initialization of application.
call_stack:
-> php7ts.dll!sapi_activate() line 457 + 0x11 bytes
php7ts.dll!php_module_startup(_sapi_module_struct * sf, _zend_module_entry * additional_modules,
unsigned int num_additional_modules) line 2072
php.exe!php_cli_startup(_sapi_module_struct * sapi_module) line 426 + 0xe bytes
php.exe!main(int argc, char * * argv) line 1327 + 0x2 bytes
php.exe!__scrt_common_main_seh() line 253 + 0x1d bytes
kernel32.dll!775aed6c()
[Specified below frames can be invalid and (or) be absent, symbols for kernel32.dll not loaded]
ntdll.dll!77b637eb()
ntdll.dll!77b637be()
disassembled_source:
456: SG(request_info).proto_num = 1000; /* Default to HTTP 1.0 */
6A0B8E8D 8B 47 04 mov eax,dword ptr [edi+4]
6A0B8E90 8B 08 mov ecx,dword ptr [eax]
6A0B8E92 A1 58 DB 78 6A mov eax,dword ptr [_sapi_globals_id (6A78DB58h)]
6A0B8E97 8B 44 81 FC mov eax,dword ptr [ecx+eax*4-4]
6A0B8E9B C7 40 50 E8 03 00 00 mov dword ptr [eax+50h],3E8h
457: SG(global_request_time) = 0;
6A0B8EA2 8B 47 04 mov eax,dword ptr [edi+4]
6A0B8EA5 8B 08 mov ecx,dword ptr [eax]
6A0B8EA7 0F 57 C0 xorps xmm0,xmm0
6A0B8EAA A1 58 DB 78 6A mov eax,dword ptr [_sapi_globals_id (6A78DB58h)]
6A0B8EAF 8B 44 81 FC mov eax,dword ptr [ecx+eax*4-4]
-> 6A0B8EB3 F2 0F 11 80 C8 00 00 00 movsd mmword ptr [eax+0C8h],xmm0
458: SG(post_read) = 0;
6A0B8EBB 8B 47 04 mov eax,dword ptr [edi+4]
6A0B8EBE 8B 08 mov ecx,dword ptr [eax]
6A0B8EC0 A1 58 DB 78 6A mov eax,dword ptr [_sapi_globals_id (6A78DB58h)]
6A0B8EC5 8B 44 81 FC mov eax,dword ptr [ecx+eax*4-4]
6A0B8EC9 88 98 88 00 00 00 mov byte ptr [eax+88h],bl
459: /* It's possible to override this general case in the activate() callback, if
necessary. */
460: if (SG(request_info).request_method && !strcmp(SG(request_info).request_method,
"HEAD")) {
registers_content: (intel)
eax 0x0021afa0
ebx 0x00000000
ecx 0x00212560
edx 0x00212c30
esi 0x00d95020
edi 0x00212c30
mm0 0x0000000000000000
mm1 0x0000000000000000
mm2 0x0000000000000000
Perhaps that is instruction SSE2 which is not supported by 32-bit processor.
------------------------------------------------------------------------
[2018-01-22 12:01:09] ab@php.net
Thank you for this bug report. To properly diagnose the problem, we
need a backtrace to see what is happening behind the scenes. To
find out how to generate a backtrace, please read
http://bugs.php.net/bugs-generating-backtrace.php
for *NIX and
http://bugs.php.net/bugs-generating-backtrace-win32.php
for Win32
Once you have generated a backtrace, please submit it to this bug
report and change the status back to "Open". Thank you for helping
us make PHP better.
Also, is some reproduce script available?
Thanks.
------------------------------------------------------------------------
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=75854
--
Edit this bug report at https://bugs.php.net/bug.php?id=75854&edit=1