|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
[2020-06-25 13:15 UTC] ca at lsp dot net
Description: ------------ (I mentioned this issue in bug 79729.) OPcache seems to cause "Call to undefined method" errors in the context of `set_exception_handler` and `header_register_callback` callbacks. I first observed this issue in 7.3.19 on 2020-06-12, two days after enabling OPcache and one day after upgrading from 7.3.18 to 7.3.19. It looks like this specific behaviour first appeared in 7.3.10. In 7.3.9 and earlier, PHP exits with "zend_mm_heap corrupted" according to Apache's error log. PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
|
|||||||||||||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Tue Oct 28 03:00:02 2025 UTC |
I'm able to reproduce the issue consistently with two (specific) concurrent Ajax requests (handled by PHP via Apache's mod_php): * Those Ajax requests always happen in the same order. * The error always occurs in the same (second) request. * The error does not occur, if the first request is blocked via the Firefox DevTools. Both Ajax requests call PHP Debug Bar's [1] `sendDataInHeaders()` method inside a `header_register_callback()`, but only the second Ajax request causes the error: ``` Error thrown with message "Call to undefined method DebugBar\DataCollector\TimeDataCollector::getDataFormatter()" Stacktrace: #7 Error in C:\***\vendor\maximebf\debugbar\src\DebugBar\DataCollector\TimeDataCollector.php:214 #6 DebugBar\DataCollector\TimeDataCollector:collect in C:\***\vendor\maximebf\debugbar\src\DebugBar\DebugBar.php:238 #5 DebugBar\DebugBar:collect in C:\***\vendor\maximebf\debugbar\src\DebugBar\DebugBar.php:265 #4 DebugBar\DebugBar:getData in C:\***\vendor\maximebf\debugbar\src\DebugBar\DebugBar.php:321 #3 DebugBar\DebugBar:sendDataInHeaders in C:\***\src\***\DebugBar.php:353 #2 ***\DebugBar:***\Bar\{closure} in C:\***\src\***\AjaxResponse.php:29 #1 ***\Ajax:sendResponse in C:\***\src\***\***.php:2958 #0 ***\***:*** in C:\***\***.php:20 ``` (Disabling OPcache also fixes the issue, of course.) [1] <https://github.com/maximebf/php-debugbar>