From: Dmitry Stogov Date: Mon, 16 Nov 2020 10:19:44 +0000 (+0300) Subject: Fixed inconsistent VM stack state X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=bd321df47925db2186d6a95e16e9ebca036b08ca;p=php Fixed inconsistent VM stack state --- diff --git a/ext/opcache/jit/zend_jit_x86.dasc b/ext/opcache/jit/zend_jit_x86.dasc index 42b0e1940c..8b61d5b092 100644 --- a/ext/opcache/jit/zend_jit_x86.dasc +++ b/ext/opcache/jit/zend_jit_x86.dasc @@ -10092,7 +10092,10 @@ static int zend_jit_do_fcall(dasm_State **Dst, const zend_op *opline, const zend if (JIT_G(trigger) != ZEND_JIT_ON_HOT_TRACE || !JIT_G(current_frame) || !JIT_G(current_frame)->call || - !TRACE_FRAME_IS_NESTED(JIT_G(current_frame)->call)) { + !TRACE_FRAME_IS_NESTED(JIT_G(current_frame)->call) || + prev_opline->opcode == ZEND_SEND_UNPACK || + prev_opline->opcode == ZEND_SEND_ARRAY || + prev_opline->opcode == ZEND_CHECK_UNDEF_ARGS) { | // zend_vm_stack_free_call_frame(call); | test byte [RX + offsetof(zend_execute_data, This.u1.type_info) + 2], (ZEND_CALL_ALLOCATED >> 16)