[php-src] Issue #7854: Segfault with built-in webserver on one-arm match statement

From: Date: Wed, 29 Dec 2021 23:06:15 +0000
Subject: [php-src] Issue #7854: Segfault with built-in webserver on one-arm match statement
Groups: php.bugs 
Request: Send a blank email to php-bugs+get-238645@lists.php.net to get a copy of this message
Issue: https://github.com/php/php-src/issues/7854
Comment Author: cmb69

I can reproduce on CLI with master branch. Output
````
In function ::{main} (before dfa):
var op1 of 2 (ZEND_FETCH_LIST_R) does not use/def an ssa var
var op1 of 4 (ZEND_FREE) does not use/def an ssa var

$_main:
     ; (lines=10, args=0, vars=2, tmps=2, ssa_vars=6, no_loops)
     ; (at SSA integrity verification)
     ; C:\php-sdk\phpdev\vs16\x64\gh7854.php:1-8
     ; return  [long] RANGE[1..1]
     ; #0.CV0($a) [undef, ref, any]
     ; #1.CV1($b) [undef, ref, any]
BB0:
     ; start exit lines=[0-9]
     ; level=0
0000 #2.V3 [ind, null, string] = FETCH_LIST_R array(...) int(0)
0001 ASSIGN #0.CV0($a) [undef, ref, any] -> #3.CV0($a) [ind, ref, any] #2.V3 [ind, null, string]
0002 #4.V3 [ind, ref, any] = FETCH_LIST_R T2 int(1)
0003 ASSIGN #1.CV1($b) [undef, ref, any] -> #5.CV1($b) [ind, ref, any] #4.V3 [ind, ref, any]
0004 FREE T2
0005 INIT_FCALL 2 112 string("var_dump")
0006 SEND_VAR #3.CV0($a) [ind, ref, any] 1
0007 SEND_VAR #5.CV1($b) [ind, ref, any] 2
0008 DO_ICALL
0009 RETURN int(1)
Assertion failed: 0 && "SSA integrity verification failed", file
C:\php-sdk\phpdev\vs16\x64\php-src\Zend\Optimizer\ssa_integrity.c, line 398
````

With PHP-8.1 on CLI I get a segfault:
````
php8_debug.dll!zval_get_type(const _zval_struct * pz) Line 556
(c:\php-sdk\phpdev\vs16\x64\php-src-8.1\Zend\zend_types.h:556)
php8_debug.dll!sccp_visit_instr(_scdf_ctx * scdf, _zend_op * opline, _zend_ssa_op * ssa_op) Line
1655 (c:\php-sdk\phpdev\vs16\x64\php-src-8.1\Zend\Optimizer\sccp.c:1655)
php8_debug.dll!scdf_solve(_scdf_ctx * scdf, const char * name) Line 168
(c:\php-sdk\phpdev\vs16\x64\php-src-8.1\Zend\Optimizer\scdf.c:168)
php8_debug.dll!sccp_optimize_op_array(_zend_optimizer_ctx * ctx, _zend_op_array * op_array,
_zend_ssa * ssa, _zend_call_info * * call_map) Line 2501
(c:\php-sdk\phpdev\vs16\x64\php-src-8.1\Zend\Optimizer\sccp.c:2501)
php8_debug.dll!zend_dfa_optimize_op_array(_zend_op_array * op_array, _zend_optimizer_ctx * ctx,
_zend_ssa * ssa, _zend_call_info * * call_map) Line 1127
(c:\php-sdk\phpdev\vs16\x64\php-src-8.1\Zend\Optimizer\dfa_pass.c:1127)
php8_debug.dll!zend_optimize_script(_zend_script * script, __int64 optimization_level, __int64
debug_level) Line 1458 (c:\php-sdk\phpdev\vs16\x64\php-src-8.1\Zend\Optimizer\zend_optimizer.c:1458)
````

No problem with PHP-8.0.


Thread (1 message)

  • cmb69
« previous php.bugs (#238645) next »