Root current opline result after GC #19787
Draft
+385
−104
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-13687.
GH-13687 TL;DR:
php-src/Zend/zend_gc.c
Lines 2213 to 2216 in 05eda43
This implements two main changes:
The latter point is needed so that we can have some expectations about the VM state (e.g. the last opline's result is initialized), and it's a good thing regardless of this bug, IMHO (e.g. #17246).
There are a few things to consider:
EX(opline)
set to the nextopline
to execute, not the last one executed. So I root the inputs ofEX(opline)
instead: IfEX(opline)
consumes the result of the previously executed opline, it will be one of the inputs.