Use the Python frame safely in _pythonCallstack (#88993) #89927
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.
Currently, the result of
PyEval_GetFrame()
is piped straight toPy_INCREF
. However,PyEval_GetFrame
may return null, which seems to be the case sometimes, when calling_pythonCallstack
from another thread. This is handled in the subsequentwhile (nullptr != frame)
block, butPy_INCREF
, called before it, doesn't handle this case, so the program segfaults. The safe form ofPy_INCREF
isPy_XINCREF
, so use that instead (docs).Pull Request resolved: #88993
Approved by: https://github.com/albanD
Fixes #ISSUE_NUMBER