1
0
mirror of https://github.com/php/php-src.git synced 2026-03-24 00:02:20 +01:00
Files
archived-php-src/ext
Ilia Alshanetsky e1a3a4c9a4 Fix GH-21267: JIT infinite loop on FETCH_OBJ_R with IS_UNDEF property (#21368)
When the JIT defers the IS_UNDEF check for FETCH_OBJ_R to the result
type guard, the deoptimization escape path dispatches to opline->handler
via the trace_escape stub. If opline->handler has been overwritten with
JIT code (e.g. a function entry trace), this creates an infinite loop.

Fix by dispatching to the original VM handler (orig_handler from the
trace extension) instead of going through the trace_escape stub. This
avoids the extra IS_UNDEF guard on every property read while correctly
handling the rare IS_UNDEF case during deoptimization.

Also set current_op_array in zend_jit_trace_exit_to_vm so that the
blacklisted exit deoptimizer can resolve orig_handler, covering the
case where side trace compilation is exhausted.

Closes GH-21368.
2026-03-16 21:31:49 +03:00
..
2026-02-28 14:57:41 +01:00
2025-10-15 19:39:12 +02:00
2026-02-17 23:15:55 +01:00
2026-03-02 18:17:14 +00:00
2026-02-27 15:05:14 +01:00
2025-10-15 20:24:22 +02:00
2025-02-17 10:27:33 +03:00
2025-12-03 20:22:38 +00:00
2025-07-22 15:52:29 +02:00
2025-12-22 12:12:42 +01:00
2026-02-27 15:05:14 +01:00
2025-06-09 11:25:41 +02:00
2026-03-02 18:51:29 +01:00
2025-12-16 15:35:25 +01:00
2025-12-22 12:54:36 +00:00
2026-03-07 11:17:56 +01:00
2026-02-27 15:05:14 +01:00
2026-02-27 15:05:14 +01:00
2025-12-28 00:21:56 +01:00