Repository navigation
Guard var_export() against native stack overflow (GH-24605) - #24671
Open
labishbardiya wants to merge 1 commit into
Open
labishbardiya wants to merge 1 commit into
labishbardiya wants to merge 1 commit into
Conversation
There was a problem hiding this comment.
Copilot was unable to review this pull request because the user who requested the review has insufficient remaining quota.
An organization owner can choose the repository organization as the billing source for reviews requested by members with a paid Copilot license. Learn about Copilot code review billing.
ndossche
approved these changes
Oct 25, 2026
ndossche
left a comment
Member
There was a problem hiding this comment.
Thanks
For the test: I think that either increasing the nesting level from 3000 to something slightly higher, or lowering the max_allowed_stack_size would make the test more robust.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Add native stack overflow protection to
var_export()so deeply nested arrays and objects raise a catchableErrorinstead of risking a segmentation fault.Refs GH-24605.
Root cause
php_var_export_ex()recursively processes nested structures without checking the native stack limit.Other recursive PHP operations already use Zend's stack-limit protection.
Changes
php_var_export_ex().FAILUREwhen the stack limit is exceeded.Validation
Environment: macOS ARM64, PHP 8.4.28-dev, debug build.
The unrelated unexpected failure occurred in
php_ini_loaded_file.phpt. It is caused by inherited-cconfiguration arguments from the test harness.The same test passes when run without those arguments. A correction is already proposed in PHP PR #24406.
The full suite has therefore not been demonstrated to pass without unexpected failures under the standard
make testinvocation.Scope
This change addresses only the
var_export()portion of GH-24605.The
print_r()andunserialize()cases remain outside this PR's scope.