Skip to content

Runtime: containers still leak their payload — 200k short-lived small arrays peak at 219 MB RSS under AOT (Zend ~2 MB); the dtor path from #36215 was reverted ("revert broken delref dtor/GC CFG") and nothing replaced it (lib/JIT/Builtin/Refcount.php, lib/JIT/HashTableDtorLlvm.php) (re-#36215) #36409

Description

@PurHur

Category

Foundation: · closed-but-not-done · child of #36379

Problem

#36215 closed via "Runtime: wire hashtable/object dtors into __ref__delref at rc=0"; a later commit "Fix AOT function-scoped array append segfault — revert broken delref dtor/GC CFG (#36215)" took the CFG part back out. Re-verified on master 1edb103c34 with the issue's probe (for 200k: $a = mk($i) where mk returns a 2-element array holding a 100-byte string and a nested array):

peak RSS
AOT 1edb103c34 219,048 kB
Zend ~2 MB (steady)

200k × ~1 KB ≈ 200 MB: every container's payload is still retained. A phpc fcgi worker doing this per request grows without bound (the #36388 soak will show it). The issue's Done-when ("flat < 20 MB", valgrind clean) is not met; the revert commit does not say what was wrong with the dtor CFG or what the plan is.

PHP implementation target

Done when

  • Probe peak RSS < 20 MB; valgrind --leak-check=full on the 9 smoke cases: 0 definitely lost
  • The function-scoped append case that triggered the revert is a committed differential case and passes; --aot --repeat 10 unchanged

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    IMPORTANTCritical patharea:compilerCompiler / CFG / JITbugSomething isn't workingimplementation-readySpec complete: repro, php-src ref, done-when — safe for workers to claimphase-3:aotPhase 3 – AOT deployment

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions