php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #75886 opcache-xdebug crash on script restart
Submitted: 2018-01-29 16:35 UTC Modified: 2020-09-16 08:09 UTC
From: john-stevenson at blueyonder dot co dot uk Assigned: cmb (profile)
Status: Duplicate Package: Reproducible crash
PHP Version: Irrelevant OS: Windows 10
Private report: No CVE-ID: None
Welcome back! If you're the original bug submitter, here's where you can edit the bug or add additional notes.
If you forgot your password, you can retrieve your password here.
Password:
Status:
Package:
Bug Type:
Summary:
From: john-stevenson at blueyonder dot co dot uk
New email:
PHP Version: OS:

 

 [2018-01-29 16:35 UTC] 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

Patches

Pull Requests

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2018-02-07 13:35 UTC] 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-02-07 21:27 UTC] 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-08 01:11 UTC] rasmus@php.net
-Status: Open +Status: Verified
 [2018-02-08 01:11 UTC] rasmus@php.net
Yeah, this is known. Not a high priority to fix at this point. Disable opcache if you are using xdebug, for now.
 [2018-02-08 22:11 UTC] john-stevenson at blueyonder dot co dot uk
Thanks. Hopefully this should do the trick: https://github.com/php/php-src/pull/3087
 [2020-09-16 08:09 UTC] cmb@php.net
-Status: Verified +Status: Duplicate -Assigned To: +Assigned To: cmb
 [2020-09-16 08:09 UTC] cmb@php.net
Closing as duplicate of bug #79825, which recently has been fixed.
 
PHP Copyright © 2001-2024 The PHP Group
All rights reserved.
Last updated: Wed Dec 04 08:01:29 2024 UTC