php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #76260 crash on any little error when opcache enabled,build with Intel C Compiler
Submitted: 2018-04-24 16:08 UTC Modified: 2018-04-24 16:47 UTC
From: inari at sosteam dot jp Assigned:
Status: Open Package: opcache
PHP Version: Irrelevant OS: Debian 8 x86_64
Private report: No CVE-ID: None
Have you experienced this issue?
Rate the importance of this bug to you:

 [2018-04-24 16:08 UTC] inari at sosteam dot jp
Description:
------------
test in php-fpm+nginx and php+apache,if any wrong part in php code(but it can run on the php with gcc compiler normal),and php will crash,
nginx and apache will return error 500.


I collect some crashes information,seems it was all with opcache.
And then I disabled opcache,now it could run php code normal.

Here is the build informations -

Compiler:
Intel C Compiler 2018 update 2(18.0.2.199 Build 20180210)

PHP Version:
7.3.0-dev(jit-dynasm)

Build options:
--enable-debug
--disable-cgi
--enable-cli
--enable-fpm
--enable-opcache
CFLAGS="-O0"
CXXFLAGS="-O0"

without any changes in php.ini

I put one of crash example code at test script.
How could fix it without crash?


Sorry for my bad english,
thank you for helping!


Test script:
---------------
<?php
function test(){
	$TEST['A']['A'] = 1;
	$TEST['A']['B'] = implode("test", $TEST['A']['B']);
}
test()
?>

Expected result:
----------------
It's could run without error like build with gcc.

Actual result:
--------------
Program terminated with signal SIGILL, Illegal instruction.
#0  0x0000000000d8838c in zend_error_va_list (type=23778976, format=0x1 <error: Cannot access memory at address 0x1>,
    args=0x7ffc86bd0ed0) at /usr/local/src/php-7.2.4/Zend/zend.c:1363
1363                            zval_ptr_dtor(&params[4]);

***************************************************************************

Program terminated with signal SIGSEGV, Segmentation fault.
#0  0x0000000000fca501 in zend_error (type=8, format=0x7fdc23bc651c "Undefined index: %s")
    at /usr/local/src/php-7.2.4/Zend/zend.c:1399
1399    {

***************************************************************************

Program terminated with signal SIGILL, Illegal instruction.
#0  0x0000000000fca281 in zend_wrong_parameters_none_error () at /usr/local/src/php-7.2.4/Zend/zend_API.c:181
181                                     ZEND_ARG_USES_STRICT_TYPES(),

***************************************************************************

Program terminated with signal SIGILL, Illegal instruction.
#0  0x0000000000fca3c3 in zend_throw_error (exception_ce=0x7ffc9992b5c8, format=0x7fb11c020550 "\340\221\006\034\261\177")
    at /usr/local/src/php-7.2.4/Zend/zend.c:1427
1427                            exception_ce = zend_ce_error;

***************************************************************************

Program terminated with signal SIGABRT, Aborted.
#0  0x00007fb120a4ce7b in raise () from /lib/x86_64-linux-gnu/libc.so.6

Patches

Add a Patch

Pull Requests

Add a Pull Request

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2018-04-24 16:24 UTC] levim@php.net
What CPU model do you have?
 [2018-04-24 16:28 UTC] inari at sosteam dot jp
Thank you for reply.

here is the cpu model:
Intel Xeon W-2145

Thank you!
 [2018-04-24 16:47 UTC] inari at sosteam dot jp
I'm sorry there is a mistake in test script,
here is the correct script:
<?php
function test(){
	$TEST['A']['A'] = 1;
	$TEST['A']['B'] = implode("test", $TEST['A']['B']);
}
test();
?>
 
PHP Copyright © 2001-2019 The PHP Group
All rights reserved.
Last updated: Sun May 26 10:01:26 2019 UTC