From: Nikita Popov Date: Wed, 29 Apr 2020 08:57:27 +0000 (+0200) Subject: JIT: Save opline before calling zend_timeout X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=17d763ff478871f867de945c959c9249b212a799;p=php JIT: Save opline before calling zend_timeout tests/045.phpt started segfaulting, because the opline is not set when zend_timeout is invoked. --- diff --git a/ext/opcache/jit/zend_jit_x86.dasc b/ext/opcache/jit/zend_jit_x86.dasc index aac0e44f3c..205c6dc38a 100644 --- a/ext/opcache/jit/zend_jit_x86.dasc +++ b/ext/opcache/jit/zend_jit_x86.dasc @@ -1606,6 +1606,7 @@ static inline zend_bool is_signed(double d) static int zend_jit_interrupt_handler_stub(dasm_State **Dst) { |->interrupt_handler: + | SAVE_OPLINE | //EG(vm_interrupt) = 0; | MEM_OP2_1_ZTS mov, byte, executor_globals, vm_interrupt, 0, r0 | //if (EG(timed_out)) { @@ -1617,7 +1618,6 @@ static int zend_jit_interrupt_handler_stub(dasm_State **Dst) |1: | //} else if (zend_interrupt_function) { if (zend_interrupt_function) { - | SAVE_OPLINE | //zend_interrupt_function(execute_data); |.if X64 | mov CARG1, FP