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

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

Build:
Build:
LAST BUILD BRANCH: fix/740-drop-clang-sys-fork
DEFAULT BRANCH: master
Repo Added 29 Oct 2025 05:59AM UTC
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/class-object-refcount-leak
branch: fix/class-object-refcount-leak
CHANGE BRANCH
x
Reset
  • fix/class-object-refcount-leak
  • 102_refs
  • 138_inheritance
  • 173_simple_extends_and_implements
  • 176_getter_test
  • 182_objects_in_props
  • 184_missing_property_types_in_stubs
  • 186_stubs_constants
  • 191_zend_callable
  • 199_union_intersection_dnf
  • 237_zval_flags
  • 252_static_props_and_methods
  • 310_performance
  • 325_static_str
  • 369_better_stubs
  • 424_zval_heap_corruption
  • 492_lit_suffixes_in_defaults
  • 493_feat_sets_in_arguments
  • 499_document_superglobals
  • 502_returning_self
  • 508_php_write
  • 515_ref_mutability
  • 518_cargo_php_install
  • 522_indexmap
  • 523_custom_allocator_and_stubs
  • 525_zend_ht_entry
  • 536_identifiers
  • 537_zend_bailout
  • 538_nullable_param
  • 590_interfaces
  • 599-add-performance-test-infrastructure
  • abstract_methods
  • add-grpc-php-rs
  • add-sapi-send-headers
  • add-sapi-zts-test
  • cargo_watch
  • chore/add-coc
  • chore/bump-edition-2024
  • chore/cargo-php-stubs-tests
  • chore/context7
  • chore/php-8-5
  • chore/php-86-nightly
  • ci/musl
  • ci/zts-embed
  • codspeed-wizard-1776277848593
  • customize-guide-logo
  • dependabot/cargo/convert_case-0.10.0
  • dependabot/cargo/convert_case-0.11.0
  • dependabot/cargo/convert_case-0.9.0
  • dependabot/cargo/darling-0.23
  • dependabot/cargo/libloading-0.9
  • dependabot/cargo/zip-7.0
  • dependabot/cargo/zip-8.0
  • dependabot/github_actions/JamesIves/github-pages-deploy-action-4.7.4
  • dependabot/github_actions/JamesIves/github-pages-deploy-action-4.7.6
  • dependabot/github_actions/JamesIves/github-pages-deploy-action-4.8.0
  • dependabot/github_actions/actions/cache-5
  • dependabot/github_actions/actions/checkout-6
  • dependabot/github_actions/actions/github-script-8
  • dependabot/github_actions/actions/github-script-9
  • dependabot/github_actions/actions/upload-artifact-7
  • dependabot/github_actions/dawidd6/action-download-artifact-19
  • dependabot/github_actions/dawidd6/action-download-artifact-20
  • dependabot/github_actions/dawidd6/action-download-artifact-21
  • dependabot/github_actions/docker/build-push-action-7
  • dependabot/github_actions/docker/setup-buildx-action-4
  • docs/move-showcase-to-awesome
  • embed-zts
  • feat/cache-slot-property-lookup
  • feat/cargo-llvm-cov
  • feat/embed-php-code
  • feat/error-observer
  • feat/interface_impl
  • feat/issue-199-primitive-union-types
  • feat/module-globals
  • feat/observer-api
  • feat/sapi-trait-and-zts
  • feat/separated-phpref-types
  • feat/static-property-descriptors
  • feat/zend-extension
  • feat/zero-alloc-fast-path
  • feat/zval-ref-deref-inline
  • feat_immutable_empty_array
  • feat_zval_coercion
  • fix-valid-method-name
  • fix-windows-symbols
  • fix/184-property-type-stubs
  • fix/729-binary-interned-heap-corruption
  • fix/740-drop-clang-sys-fork
  • fix/bencher-host
  • fix/binary-return-memory-leak
  • fix/cargo-php-install-musl
  • fix/ci-badge-workflow-reference
  • fix/clang-arm64-preserve-none
  • fix/clippy--
  • fix/clippy-1-93-0
  • fix/clippy-1-95-0
  • fix/clippy-hasher
  • fix/clippy-rust-1-91
  • fix/cloning-class
  • fix/deploy-doc
  • fix/disable-zts-embed
  • fix/github-templates
  • fix/mock-unint
  • fix/module-entry-memory-leak
  • fix/musl-8-5-build
  • fix/null-pointer-sapi-trampolines
  • fix/parking-lot-min-version
  • fix/releaze-plz-workflow
  • fix/releaze-plz-workflow-permission
  • fix/segfault-empy-array
  • fix/string-prop-getter-zend-string-leak
  • fix/use-fork-bindgen
  • fix/windows-bindgen-nommx
  • fix/windows-dev-pack
  • fix/windows-link-attr-without-rustfmt
  • fix_prop_visibility
  • fix_stub_gen
  • hotload
  • json_serializable
  • lazy
  • master
  • named_arguments
  • patch-1
  • perf/precompute-mangled-property-names
  • perf/zend-string-init-fast
  • raw-dylib-fix
  • readonly_class
  • release-plz-2025-10-29T06-23-17Z
  • release-plz-2025-10-29T13-44-17Z
  • release-plz-trigger
  • release-plz-trigger-v2
  • release-plz-trigger-v3
  • remove-php80-testing
  • showcase
  • smartstring
  • trusted-publishing

11 May 2026 02:39PM UTC coverage: 66.23% (-0.01%) from 66.241%
25676991317

Pull #735

github

ptondereau
test: regression coverage for ZendClassObject<T> set_zval refcount leak

Adds an integration test that exercises the exact buggy code path
fixed in the previous commit: a class extending \Exception with a
#[php(prop)] field, constructed via ZendClassObject::new(...)
.into_zval(...) and thrown via PhpException::with_object. The
caught exception's refcount is read inside the catch block via
debug_zval_dump; with the fix the only holder is the catch-bound
variable, so the dump reports refcount 2. Without the fix the
buggy set_zval keeps an extra ref and the dump reports 3.

Refcount via debug_zval_dump was chosen over a memory-growth
measurement so the same assertion fires on release and debug PHP
builds. memory_get_usage / gc_collect_cycles interact poorly with
a separate latent refcount bug in the IntoZval impl for
&mut ZendClassObject<T> (out of scope here): on debug builds GC
tries to add to a shared HT and trips
_zend_hash_str_add_or_update_i.

Verified against PHP 8.4.20 NTS and 8.4.20 ZTS-DEBUG: passes
with the fix, fails (refcount 3) without it.
Pull Request #735: fix: leak one refcount in ZBox<ZendClassObject<T>>::set_zval

0 of 4 new or added lines in 2 files covered. (0.0%)

8653 of 13065 relevant lines covered (66.23%)

33.26 hits per line

Relevant lines Covered
Build:
Build:
13065 RELEVANT LINES 8653 COVERED LINES
33.26 HITS PER LINE
Source Files on fix/class-object-refcount-leak
  • Tree
  • List 96
  • Changed 2
  • Source Changed 2
  • Coverage Changed 2
Coverage ∆ File Lines Relevant Covered Missed Hits/Line

Recent builds

Builds Branch Commit Type Ran Committer Via Coverage
25676991317 fix/class-object-refcount-leak test: regression coverage for ZendClassObject<T> set_zval refcount leak Adds an integration test that exercises the exact buggy code path fixed in the previous commit: a class extending \Exception with a #[php(prop)] field, constructed via ZendCl... Pull #735 11 May 2026 02:42PM UTC ptondereau github
66.23
25674873189 fix/class-object-refcount-leak test: regression coverage for ZendClassObject<T> set_zval refcount leak Adds an integration test that exercises the exact buggy code path fixed in the previous commit: a class extending \Exception with a #[php(prop)] field, constructed via ZendCl... Pull #735 11 May 2026 02:02PM UTC ptondereau github
66.23
25674249509 fix/class-object-refcount-leak test: regression coverage for ZendClassObject<T> set_zval refcount leak Adds an integration test that exercises the exact buggy code path fixed in the previous commit: a class extending \Exception with a #[php(prop)] field, constructed via ZendCl... Pull #735 11 May 2026 01:53PM UTC ptondereau github
66.23
25674270162 fix/class-object-refcount-leak Merge e8514a6d6 into 0912e7c24 Pull #735 11 May 2026 01:53PM UTC web-flow github
66.23
See All Builds (970)
  • 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