CVE-2026-109618 (PHP2Shell) is a critical unauthenticated RCE in PHP's core engine. The root cause is PHP's use of longjmp()/bailout for out-of-memory errors: when an allocation fails, PHP exits the current context without unwinding, leaving request-owned memory published in persistent globals (BG(unserialize), PS(id), EG(last_fatal_error_backtrace), etc.). The request heap is then freed while those globals still point into it, and a later request handled by the same worker consumes the stale pointers before normal request initialization resets them. The confirmed exploit chain uses multipart upload-progress handling: php_session_rfc1867_callback runs during request startup, php_session_initialize publishes PS(id), and php_session_decode invokes php_var_unserialize, which stores bookkeeping in BG(unserialize). An OOM during this path aborts before cleanup, producing a cross-request use-after-free that can be shaped into memory disclosure (PHPSESSID cookie leaking heap contents) and ultimately RCE. The patch (commit 31c0ea7d) fixes this by replacing bailout-on-OOM with a delayed graceful soft OOM plus a hard _exit() threshold, and by properly resetting the affected globals (e.g., adding PS(in_rfc1867_update) = false to php_rinit_session_globals and reworking the unserializer's BG(unserialize) lifecycle). The functions listed above are the ones that contain the vulnerable state handling and would appear in a runtime profile/stack trace during exploitation.