Category
bug · AOT · leftover of #35991 / #20565 · php-src-strict
Problem
Thin AOT still has no SQLite3::open proxy after the version fold (#35991). Calls lower to an ExternalMethod null stub instead of php-src zim_sqlite3_open behaviour.
Host Zend in the CI image has no ext/sqlite3; compare VM vs AOT under PHP_COMPILER_PROFILE=8.4 (same gate as #35991).
Repro (PHP_COMPILER_PROFILE=8.4) |
VM (2026-08-30 @ 78852fc5dd) |
AOT |
$db = new SQLite3(':memory:'); try { $db->open(':memory:'); } catch (Throwable $e) { echo get_class($e), ':', $e->getMessage(); } |
Exception:Already initialised DB Object |
silent NULL (no throw) |
$db->close(); $db->open(':memory:'); then querySingle of folded SQL |
reopen succeeds (void → null dump); DB usable |
NULL stub; no reopen |
php-src reference
PHP implementation target
- Register
open on lib/JIT/Call/Sqlite3Method + Context sqlite3 proxies (peer of #35991 version)
ext/sqlite3/JitSqlite3::open — if PROP_ID != 0 throw Exception; else re-init props like __construct after close (PROP_ID=0)
- No new
runtime/*.c
Repro
./script/docker-exec.sh -- bash -lc 'export PHP_COMPILER_PROFILE=8.4
php bin/vm.php test/repro/sqlite3_open_aot.php
php bin/compile.php -o /tmp/o.bin test/repro/sqlite3_open_aot.php && /tmp/o.bin'
Done when
Parent
Category
bug· AOT · leftover of #35991 / #20565 · php-src-strictProblem
Thin AOT still has no
SQLite3::openproxy after the version fold (#35991). Calls lower to an ExternalMethod null stub instead of php-srczim_sqlite3_openbehaviour.Host Zend in the CI image has no
ext/sqlite3; compare VM vs AOT underPHP_COMPILER_PROFILE=8.4(same gate as #35991).PHP_COMPILER_PROFILE=8.4)78852fc5dd)$db = new SQLite3(':memory:'); try { $db->open(':memory:'); } catch (Throwable $e) { echo get_class($e), ':', $e->getMessage(); }Exception:Already initialised DB ObjectNULL(no throw)$db->close(); $db->open(':memory:');thenquerySingleof folded SQLNULLstub; no reopenphp-src reference
ext/sqlite3/sqlite3.c—zim_sqlite3_open/Already initialised DB Objectext/sqlite3/SQLite3Open.php+VmSQLite3::openObjectPHP implementation target
openonlib/JIT/Call/Sqlite3Method+Contextsqlite3 proxies (peer of#35991version)ext/sqlite3/JitSqlite3::open— ifPROP_ID != 0throwException; else re-init props like__constructafterclose(PROP_ID=0)runtime/*.cRepro
Done when
./script/aot-smoke.shstays 8/8Parent