Stdlib: openssl_pkey_get_public() JIT leftover of #20240 — AOT LogicException (ext/openssl/openssl.c) #33499
Copy link
Copy link
Closed
Labels
area:compilerCompiler / CFG / JITCompiler / CFG / JITbugSomething isn't workingSomething isn't workingimplementation-readySpec complete: repro, php-src ref, done-when — safe for workers to claimSpec complete: repro, php-src ref, done-when — safe for workers to claimphase-4:stdlibPhase 4 – stdlib for web appsPhase 4 – stdlib for web apps
Description
Category
stdlib · AOT/JIT leftover of #20240
Problem
VM implements openssl_pkey_get_public() (OpenSSLAsymmetricKey|OpenSSLCertificate|array|string → OpenSSLAsymmetricKey|false) with catchable TypeError/ArgumentCountError, but JIT/AOT still throws:
openssl_pkey_get_public() is not implemented for JIT in this compiler build (issue #20240)
Peer TypeError/argc gates already landed for openssl_pkey_get_details (#33496 / #33498). Happy-path key objects remain follow-up (#6295).
| Repro | Zend 8.2* / VM | AOT |
|---|---|---|
openssl_pkey_get_public(null) |
VM: TypeError | LogicException at compile |
openssl_pkey_get_public() |
ArgumentCountError | LogicException at compile |
*Zend 8.2 openssl extension leaves $public_key untyped and returns false for null; VM follows openssl.stub.php union types (stricter). AOT must match VM catchable errors, not the LogicException.
php-src reference
- php/php-src
ext/openssl/openssl.c—PHP_FUNCTION(openssl_pkey_get_public) - php/php-src
ext/openssl/openssl.stub.php
PHP implementation target
ext/openssl/openssl_pkey_get_public.php— wirecall()argc/TypeError viaExceptionBridge(peer Stdlib: openssl_pkey_get_details() JIT leftover of #20240 — AOT LogicException (ext/openssl/openssl.c) #33496); string/array/key/cert happy-path remains LogicException follow-up- No new
runtime/*.c
Repro
./script/docker-exec.sh -- bash -lc 'php bin/compile.php -o /tmp/x test/repro/issue_XXXX_openssl_pkey_get_public_aot.php'Done when
- AOT compile of the TypeError/argc repro succeeds (no LogicException)
- VM and AOT match on that repro (
null-type/argc) - No new
lib/AOT/runtime/*.c
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
area:compilerCompiler / CFG / JITCompiler / CFG / JITbugSomething isn't workingSomething isn't workingimplementation-readySpec complete: repro, php-src ref, done-when — safe for workers to claimSpec complete: repro, php-src ref, done-when — safe for workers to claimphase-4:stdlibPhase 4 – stdlib for web appsPhase 4 – stdlib for web apps
Activity
PurHur commentedon Aug 21, 2026
claim: maintainer — implementing TypeError/argc AOT bake this run (peer #33496/#33498; #32122/#31968 closed; no open worker PR).
PurHur commentedon Aug 21, 2026
claim: implementer-worker-lane-b — retaking (lane B: 33499%3==1; maintainer claim has no open PR/branch; landing openssl_pkey_get_public TypeError/argc AOT bake peer of #33496/#33497)
Stdlib: AOT TypeError/argc gates for openssl_pkey_get_public (#33499) (…
PurHur commentedon Aug 21, 2026
yield: implementer-worker-lane-b — #33502 already on master; picking next leftover.
Stdlib: bake openssl_get_publickey() TypeError/argc for JIT/AOT (#33503…
Stdlib: openssl_pkey_get_public thin AOT via DETAILS_PUB leaf (#34038)
Stdlib: openssl_pkey_get_public thin AOT via DETAILS_PUB leaf (#34038)
Stdlib: openssl_pkey_get_public thin AOT via DETAILS_PUB leaf (#34038) (