• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

ptondereau / ext-php-rs
66%
master: 66%

Build:
Build:
LAST BUILD BRANCH: fix/string-prop-getter-zend-string-leak
DEFAULT BRANCH: master
Repo Added 01 Apr 2026 02:57PM UTC
Token Y7FoKFtsn51OXQH6dAAozlw5G2JFddXKH regen
Build 18 Last
Files 96
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

LAST BUILD ON BRANCH fix/string-prop-getter-zend-string-leak
branch: fix/string-prop-getter-zend-string-leak
CHANGE BRANCH
x
Reset
Sync Branches
  • fix/string-prop-getter-zend-string-leak
  • feat/cache-slot-property-lookup
  • feat/module-globals
  • feat/sapi-trait-and-zts
  • feat/static-property-descriptors
  • fix/729-binary-interned-heap-corruption
  • fix/clippy-1-95-0
  • fix/null-pointer-sapi-trampolines

13 May 2026 04:40PM UTC coverage: 66.23%. First build
25812954678

push

github

ptondereau
docs(prop): document the Exception::getMessage refcount leak

Hit this while building a PHPStan rule on top of biscuit-php and noticing
memory growing on every datalog parse error. Tracking it down: any
`#[php(prop)]` field holding an owned refcounted type (String, Vec, etc.)
leaks one zend_string per call when PHP's Exception::getMessage reads it.
Direct property access (`$obj->prop`) is unaffected — only the
`zval_get_string + RETURN_STR` pattern used by Exception's final C
methods triggers the orphaned refcount.

Adds a regression test (marked `#[ignore]` so CI stays green) and
documentation on the `#[php(prop)]` attribute with two workarounds:
either rename the shadow field, or mirror to the parent's real slot via
`zend_update_property_stringl`. Proper fix needs either an upstream PHP
patch or a deeper change to how field props store their value.

8653 of 13065 relevant lines covered (66.23%)

33.38 hits per line

Relevant lines Covered
Build:
Build:
13065 RELEVANT LINES 8653 COVERED LINES
33.38 HITS PER LINE
Source Files on fix/string-prop-getter-zend-string-leak
  • Tree
  • List 96
  • Changed 0
  • Source Changed 0
  • Coverage Changed 0
Coverage ∆ File Lines Relevant Covered Missed Hits/Line

Recent builds

Builds Branch Commit Type Ran Committer Via Coverage
25812954678 fix/string-prop-getter-zend-string-leak docs(prop): document the Exception::getMessage refcount leak Hit this while building a PHPStan rule on top of biscuit-php and noticing memory growing on every datalog parse error. Tracking it down: any `#[php(prop)]` field holding an owned refcou... push 13 May 2026 04:45PM UTC ptondereau github
66.23
See All Builds (18)

Badge your Repo: ext-php-rs

We detected this repo isn’t badged! Grab the embed code to the right, add it to your repo to show off your code coverage, and when the badge is live hit the refresh button to remove this message.

Could not find badge in README.

Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

Refresh
  • Settings
  • Repo on GitHub
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc