Add observer temporary to dl'ed functions #17220
Closed
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.
Possible fix for GH-17211.
See #17211 (comment).
When observer is enabled, we normally add an extra temporary to all functions, to store the previously observed frame. However, this is done in
zend_observer_post_startup()
so it doesn't happen to dl'ed() functions.One possible fix would be to move that from
zend_observer_post_startup()
tozend_register_functions()
, but this would be too early: Observer may not be enabled whenzend_register_functions()
is called, and may still be enabled later.However, when
zend_register_functions()
is called at run-time (duringdl()
), we know definitively whether observer is enabled.Here I update
zend_register_functions()
to add a temporary to dl'ed() functions when observer is enabled.