Bug #75886 [Opn->Ver]: opcache-xdebug crash on script restart

From: Date: Thu, 08 Feb 2018 01:11:34 +0000
Subject: Bug #75886 [Opn->Ver]: opcache-xdebug crash on script restart
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-213857@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=75886&edit=1

 ID:                 75886
 Updated by:         rasmus@php.net
 Reported by:        john-stevenson at blueyonder dot co dot uk
 Summary:            opcache-xdebug crash on script restart
-Status:             Open
+Status:             Verified
 Type:               Bug
 Package:            Reproducible crash
 Operating System:   Windows 10
 PHP Version:        Irrelevant
 Block user comment: N
 Private report:     N

 New Comment:

Yeah, this is known. Not a high priority to fix at this point. Disable opcache if you are using
xdebug, for now.


Previous Comments:
------------------------------------------------------------------------
[2018-02-07 21:27:47] john-stevenson at blueyonder dot co dot uk

This happens on *nix when opcache file-caching is being used. I have reported it here: https://bugs.php.net/bug.php?id=75932

------------------------------------------------------------------------
[2018-02-07 13:35:01] john-stevenson at blueyonder dot co dot uk

This behavior can be more easily reproduced using opcache file-caching with a basic script:

//test.php
<?php
echo "okay\n";

--------

Config: opcache and xdebug extensions enabled
        opcache.enable_cli=1
        opcache.file_cache=/some/where
        opcache.file_cache_only=1

Run: php.exe test.php // Prints "okay"

Config: As above, but disable xdebug

Run: php.exe test.php // crashes

------------------------------------------------------------------------
[2018-01-29 16:35:08] john-stevenson at blueyonder dot co dot uk

Description:
------------
When a cli script (with opcache and xdebug loaded, and opcache.enable_cli=1) is restarted without
xdebug, the restarted process crashes (but only on Windows).

First reported in Composer: https://github.com/composer/composer/issues/6052
Fixed in user-land by setting opcache.enable_cli=0 for the new process
Reported to Xdebug: https://bugs.xdebug.org/view.php?id=1393

Note that if the process is restarted WITH xdebug loaded there is no crash.

Test script:
---------------
Enable opcache and xdebug extensions. Set opcache.enable_cli=1

Download:  https://getcomposer.org/download/1.3.1/composer.phar
Run: php.exe comoser.phar --version

OR use this simple restart.php script:
https://gist.github.com/johnstevenson/12348144c498e9545cd73ea01435c904
Run: php.exe restart.php (crashes)
Run: php.exe restart.php --fix (okay)
Run: php.exe restart.php --keep-xdebug (okay)

Actual result:
--------------
From PHP-7.2.1

Unhandled exception at 0x00007FFF817C0D8F (ntdll.dll) in php.exe:
RangeChecks instrumentation code detected an out of range array access. occurred

ntdll.dll!LdrpICallHandler()	Unknown	Non-user code.
ntdll.dll!RtlpExecuteHandlerForException()	Unknown	Non-user code.
ntdll.dll!RtlDispatchException()	Unknown	Non-user code.
ntdll.dll!KiUserExceptionDispatch()	Unknown	Non-user code.
ntdll.dll!LdrpValidateUserCallTarget()	Unknown	Non-user code.
php7ts.dll!ZEND_USER_OPCODE_SPEC_HANDLER(_zend_execute_data * execute_data) Line 1813
php7ts.dll!execute_ex(_zend_execute_data * ex) Line 59726
php7ts.dll!zend_execute(_zend_op_array * op_array, _zval_struct * return_value) Line 63764
php7ts.dll!zend_execute_scripts(int type, _zval_struct * retval, int file_count, ...) Line 1497
php7ts.dll!php_execute_script(_zend_file_handle * primary_file) Line 2590
php.exe!do_cli(int argc, char * * argv) Line 1012
php.exe!main(int argc, char * * argv) Line 1404


------------------------------------------------------------------------



--
Edit this bug report at https://bugs.php.net/bug.php?id=75886&edit=1


Thread (6 messages)

« previous php.bugs (#213857) next »