Bug #78344 [Fbk->Asn]: Segmentation fault on zend_check_protected
| From: | nikic@php.net | Date: | Mon, 29 Jul 2019 08:39:41 +0000 |
| Subject: | Bug #78344 [Fbk->Asn]: Segmentation fault on zend_check_protected | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-221972@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=78344&edit=1
ID: 78344
Updated by: nikic@php.net
Reported by: a dot dankovtsev at mail dot ru
Summary: Segmentation fault on zend_check_protected
-Status: Feedback
+Status: Assigned
Type: Bug
Package: Reproducible crash
Operating System: Mac OS
PHP Version: 7.4.0beta1
-Assigned To:
+Assigned To: nikic
Block user comment: N
Private report: N
New Comment:
Got one:
class A {
protected const FOO = 1;
}
class B {}
class C extends B {
public function method() {
var_dump(A::FOO);
}
}
Previous Comments:
------------------------------------------------------------------------
[2019-07-29 08:28:28] nikic@php.net
My suspicion here is that this is caused by the parent class being in string form during the
visibility check, but I haven't been able to come up with a reproducer...
------------------------------------------------------------------------
[2019-07-29 07:48:09] krakjoe@php.net
Thank you for this bug report. To properly diagnose the problem, we
need a short but complete example script to be able to reproduce
this bug ourselves.
A proper reproducing script starts with <?php and ends with ?>,
is max. 10-20 lines long and does not require any external
resources such as databases, etc. If the script requires a
database to demonstrate the issue, please make sure it creates
all necessary tables, stored procedures etc.
Please avoid embedding huge scripts into the report.
We can see roughly what's going on from the trace, we know that active class entry has a bogus
address for some reason, and we can see roughly what leads up too it, but it's too hard to
guess the exact code that will reproduce the fault.
Please provide a minimal reproducing test case.
------------------------------------------------------------------------
[2019-07-29 07:37:36] requinix@php.net
Can you tell what file it was compiling at the time? You might need to use a debug build.
------------------------------------------------------------------------
[2019-07-29 07:33:48] a dot dankovtsev at mail dot ru
Description:
------------
Something went wrong
lldb --core /cores/core.71210
(lldb) target create --core "/cores/core.71210"
Core file '/cores/core.71210' (x86_64) was loaded.
(lldb) bt all
php was compiled with optimization - stepping may behave oddly; variables may not be available.
* thread #1, stop reason = signal SIGSTOP
* frame #0: 0x000000010d4d0c80 php`zend_check_protected(ce=0x000000010fb9b918,
scope=0x0000000000000010) at zend_object_handlers.c:1207 [opt]
frame #1: 0x000000010d47bd2d php`zend_try_ct_eval_class_const(zv=<unavailable>,
class_name=<unavailable>, name=<unavailable>) at zend_compile.c:1436 [opt]
frame #2: 0x000000010d47b063 php`zend_compile_class_const(result=0x00007ffee2a07da8,
ast=0x0000000110646778) at zend_compile.c:7971 [opt]
frame #3: 0x000000010d461761 php`zend_compile_args(ast=0x0000000110646718,
fbc=0x0000000000000000) at zend_compile.c:2996 [opt]
frame #4: 0x000000010d461bbf php`zend_compile_call_common(result=0x00007ffee2a07f10,
args_ast=<unavailable>, fbc=0x0000000000000000) at zend_compile.c:3073 [opt]
frame #5: 0x000000010d467e3d php`zend_compile_method_call(result=0x0000000000000000,
ast=<unavailable>, type=<unavailable>) at zend_compile.c:3884 [opt]
frame #6: 0x000000010d45f23a php`zend_compile_var(result=0x00007ffee2a07f10,
ast=<unavailable>, type=0, by_ref=0) at zend_compile.c:8644 [opt]
frame #7: 0x000000010d46bc67 php`zend_compile_stmt(ast=0x0000000110646790) at
zend_compile.c:8480 [opt]
frame #8: 0x000000010d46bbda php`zend_compile_stmt [inlined]
zend_compile_stmt_list(ast=<unavailable>) at zend_compile.c:5201 [opt]
frame #9: 0x000000010d46bbbc php`zend_compile_stmt(ast=0x0000000110646690) at
zend_compile.c:8392 [opt]
frame #10: 0x000000010d46d41c php`zend_compile_if(ast=0x0000000110646880) at zend_compile.c:4672
[opt]
frame #11: 0x000000010d46bbf4 php`zend_compile_stmt(ast=0x0000000110646880) at
zend_compile.c:8435 [opt]
frame #12: 0x000000010d46bbda php`zend_compile_stmt [inlined]
zend_compile_stmt_list(ast=<unavailable>) at zend_compile.c:5201 [opt]
frame #13: 0x000000010d46bbbc php`zend_compile_stmt(ast=0x0000000110646540) at
zend_compile.c:8392 [opt]
frame #14: 0x000000010d47138b php`zend_compile_func_decl(result=0x0000000000000000,
ast=0x00000001106470b8, toplevel='\0') at zend_compile.c:5978 [opt]
frame #15: 0x000000010d46b7e9 php`zend_compile_stmt(ast=0x00000001106470b8) at
zend_compile.c:8448 [opt]
frame #16: 0x000000010d46bbda php`zend_compile_stmt [inlined]
zend_compile_stmt_list(ast=<unavailable>) at zend_compile.c:5201 [opt]
frame #17: 0x000000010d46bbbc php`zend_compile_stmt(ast=0x0000000110646458) at
zend_compile.c:8392 [opt]
frame #18: 0x000000010d46873f php`zend_compile_class_decl(ast=0x0000000110647ab8,
toplevel='\x01') at zend_compile.c:6391 [opt]
frame #19: 0x000000010d473bf3 php`zend_compile_top_stmt(ast=0x0000000110647ab8) at
zend_compile.c:8367 [opt]
frame #20: 0x000000010d473bca php`zend_compile_top_stmt(ast=0x0000000110647b00) at
zend_compile.c:8356 [opt]
frame #21: 0x000000010d441830 php`zend_compile(type=2) at zend_language_scanner.l:610 [opt]
frame #22: 0x000000010d4416fd php`compile_file(file_handle=0x00007ffee2a086c0, type=2) at
zend_language_scanner.l:644 [opt]
frame #23: 0x000000010d33c6db php`phar_compile_file(file_handle=0x00007ffee2a086c0, type=2) at
phar.c:3298 [opt]
frame #24: 0x000000010d441926 php`compile_filename(type=2, filename=0x0000000000000000) at
zend_language_scanner.l:665 [opt]
frame #25: 0x000000010d52969d php`zend_include_or_eval(inc_filename=0x000000010de1ccb0, type=2)
at zend_execute.c:4223 [opt]
frame #26: 0x000000010d4fe942
php`ZEND_INCLUDE_OR_EVAL_SPEC_CV_HANDLER(execute_data=0x000000010de1c490) at zend_vm_execute.h:37502
[opt]
frame #27: 0x000000010d4db668 php`execute_ex(ex=0x000000010de1c490) at zend_vm_execute.h:53288
[opt]
frame #28: 0x000000010d47f72c php`zend_call_function(fci=<unavailable>,
fci_cache=<unavailable>) at zend_execute_API.c:819 [opt]
frame #29: 0x000000010d36cd2e php`zif_spl_autoload_call(execute_data=<unavailable>,
return_value=<unavailable>) at php_spl.c:448 [opt]
frame #30: 0x000000010d47f78e php`zend_call_function(fci=<unavailable>,
fci_cache=<unavailable>) at zend_execute_API.c:832 [opt]
frame #31: 0x000000010d47ff18 php`zend_lookup_class_ex(name=<unavailable>,
key=0x0000000000000000, flags=<unavailable>) at zend_execute_API.c:993 [opt]
frame #32: 0x000000010d4abcd4 php`class_exists_impl(execute_data=<unavailable>,
return_value=0x000000010de1c1e0, flags=0, skip_flags=3) at zend_builtin_functions.c:1469 [opt]
frame #33: 0x000000010d513307
php`ZEND_DO_FCALL_BY_NAME_SPEC_RETVAL_USED_HANDLER(execute_data=0x000000010de1c330) at
zend_vm_execute.h:1517 [opt]
frame #34: 0x000000010d4db668 php`execute_ex(ex=0x000000010de1bf70) at zend_vm_execute.h:53288
[opt]
frame #35: 0x000000010d4db82c php`zend_execute(op_array=0x000000010de7a540,
return_value=0x0000000000000000) at zend_vm_execute.h:57577 [opt]
frame #36: 0x000000010d490391 php`zend_execute_scripts(type=8, retval=0x0000000000000000,
file_count=3) at zend.c:1663 [opt]
frame #37: 0x000000010d41a141 php`php_execute_script(primary_file=<unavailable>) at
main.c:2606 [opt]
frame #38: 0x000000010d52f6cb php`do_cli(argc=<unavailable>, argv=<unavailable>) at
php_cli.c:962 [opt]
frame #39: 0x000000010d52e538 php`main(argc=4, argv=0x00007ffee2a09aa0) at php_cli.c:1352 [opt]
frame #40: 0x00007fff76922015 libdyld.dylib`start + 1
Test script:
---------------
some build script with building symfony dependency injection
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=78344&edit=1