Commit 0dcc08d453d for php
commit 0dcc08d453d0e732a947e7cd145276cbb453ea75
Merge: 80b13459a4e 2cf7ad09bdd
Author: David Carlier <devnexen@gmail.com>
Date: Fri Oct 9 13:26:23 2026 +0100
Merge branch 'PHP-8.5' into PHP-8.6
* PHP-8.5:
Fix GH-24081: User opcode DISPATCH runs on a stale frame in the TAILCALL VM
# Conflicts:
# Zend/zend_vm_execute.h
# Zend/zend_vm_gen.php
diff --cc Zend/zend_vm_execute.h
index dd284391a2a,64e0c5f041e..e9d66ab066f
Binary files differ
diff --cc Zend/zend_vm_gen.php
index 674d1ed5b67,e08d9ebd32b..57b718fcf76
--- a/Zend/zend_vm_gen.php
+++ b/Zend/zend_vm_gen.php
@@@ -2144,8 -2149,7 +2144,9 @@@ function gen_executor($f, $skl, $spec,
out($f,"# undef ZEND_VM_RETURN\n");
out($f,"# undef ZEND_VM_DISPATCH_TO_HELPER\n");
out($f,"# undef ZEND_VM_INTERRUPT\n");
+ out($f,"# undef ZEND_VM_ENTER_EX\n");
+ out($f,"# undef ZEND_VM_LEAVE\n");
+ out($f,"# undef ZEND_VM_DISPATCH\n");
out($f,"\n");
out($f,"# define ZEND_VM_TAIL_CALL(call) ZEND_MUSTTAIL return call\n");
out($f,"# define ZEND_VM_CONTINUE() ZEND_VM_TAIL_CALL(opline->handler(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU))\n");
@@@ -2157,8 -2161,7 +2158,9 @@@
out($f," } while (0)\n");
out($f,"# define ZEND_VM_DISPATCH_TO_LEAVE_HELPER(helper) opline = &call_leave_op; SAVE_OPLINE(); ZEND_VM_CONTINUE()\n");
out($f,"# define ZEND_VM_INTERRUPT() ZEND_VM_TAIL_CALL(zend_interrupt_TAILCALL(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU))\n");
+ out($f,"# define ZEND_VM_ENTER_EX() ZEND_VM_INTERRUPT_CHECK(); ZEND_VM_CONTINUE()\n");
+ out($f,"# define ZEND_VM_LEAVE() ZEND_VM_CONTINUE()\n");
+ out($f,"# define ZEND_VM_DISPATCH(opcode, opline) ZEND_VM_TAIL_CALL(zend_vm_get_opcode_handler(opcode, opline)(ZEND_OPCODE_HANDLER_ARGS_PASSTHRU))\n");
out($f,"\n");
out($f,"static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_CCONV zend_interrupt_helper".($spec?"_SPEC":"")."_TAILCALL(ZEND_OPCODE_HANDLER_ARGS);\n");
out($f,"static ZEND_OPCODE_HANDLER_RET ZEND_OPCODE_HANDLER_FUNC_CCONV zend_interrupt(ZEND_OPCODE_HANDLER_ARGS);\n");