Bug #77615 [Opn]: Undefined class constant 'self::DOES_EXIST'
| From: | mberchtold at gmail dot com | Date: | Wed, 13 Feb 2019 19:54:33 +0000 |
| Subject: | Bug #77615 [Opn]: Undefined class constant 'self::DOES_EXIST' | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-219564@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=77615&edit=1
ID: 77615
User updated by: mberchtold at gmail dot com
Reported by: mberchtold at gmail dot com
Summary: Undefined class constant 'self::DOES_EXIST'
Status: Open
Type: Bug
Package: Compile Failure
Operating System: Windows 10 x64
PHP Version: Next Minor Version
Block user comment: N
Private report: N
New Comment:
To reproduce it, it is sufficient to preload the zend-validator\src folder from ZF3:
_preload(['C:\vendor\zendframework\zend-validator\src']);
Previous Comments:
------------------------------------------------------------------------
[2019-02-13 19:44:18] mberchtold at gmail dot com
Description:
------------
I'm testing PHP 7.4 (https://windows.php.net/downloads/snaps/ostc/7.4/2019-02-13/) with
preloading on Windows 10. The following exception is thrown and PHP crashes.
Undefined class constant 'self::DOES_EXIST'
in zend_constants.c
if ((flags & ZEND_FETCH_CLASS_SILENT) == 0) {
zend_throw_error(NULL, "Undefined class constant '%s::%s'",
ZSTR_VAL(class_name), ZSTR_VAL(constant_name));
goto failure;
}
The only reference to DOES_EXIST can be found in this file:
https://github.com/zendframework/zend-validator/blob/master/src/File/NotExists.php
Stack trace:
php7.dll!zend_exception_error(_zend_object * ex, int severity) Line 969 C
php7.dll!zend_error_va_list(int type, const char * format, char * args) Line 1283 C
php7.dll!zend_error(int type, const char * format, ...) Line 1478 C
php7.dll!zend_throw_error(_zend_class_entry * exception_ce, const char * format, ...) Line 1516 C
> php7.dll!zend_get_constant_ex(_zend_string * cname, _zend_class_entry * scope, unsigned int
>flags) Line 376 C
php7.dll!zend_ast_evaluate(_zval_struct * result, _zend_ast * ast, _zend_class_entry * scope) Line
505 C
php7.dll!zend_ast_evaluate(_zval_struct * result, _zend_ast * ast, _zend_class_entry * scope) Line
646 C
php7.dll!zval_update_constant_ex(_zval_struct * p, _zend_class_entry * scope) Line 614 C
php_opcache.dll!preload_link() Line 3379 C
php_opcache.dll!accel_preload(const char * config) Line 3809 C
[Inline Frame] php_opcache.dll!accel_finish_startup() Line 3992 C
php_opcache.dll!accel_post_startup() Line 2927 C
php7.dll!zend_post_startup() Line 991 C
php7.dll!php_module_startup(_sapi_module_struct * sf, _zend_module_entry * additional_modules,
unsigned int num_additional_modules) Line 2358 C
php.exe!php_cli_startup(_sapi_module_struct * sapi_module) Line 415 C
php.exe!main(int argc, char * * argv) Line 1351 C
[Inline Frame] php.exe!invoke_main() Line 78 C++
php.exe!__scrt_common_main_seh() Line 288 C++
kernel32.dll!BaseThreadInitThunk() Unknown
ntdll.dll!RtlUserThreadStart() Unknown
Test script:
---------------
preload zend framework 3 with PHP 7.4 on Windows. Maybe it is enough to preload this file alone:
https://github.com/zendframework/zend-validator/blob/master/src/File/NotExists.php
Expected result:
----------------
No crash.
Actual result:
--------------
Access violation.
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=77615&edit=1