gh-148268: Avoid debug assertion in specialized list compares#148309
Open
officialasishkumar wants to merge 1 commit intopython:mainfrom
Open
gh-148268: Avoid debug assertion in specialized list compares#148309officialasishkumar wants to merge 1 commit intopython:mainfrom
officialasishkumar wants to merge 1 commit intopython:mainfrom
Conversation
Handle recursion errors raised by the debug-only cross-check in the specialized latin, compact-int, and float comparison helpers used by list sorting. When the verification path hits the C stack overflow guard, clear that exception so the optimized comparison remains side-effect free.\n\nThe change preserves the consistency assertion when the fallback comparison succeeds and adds a NEWS entry for the fix.
Member
|
@officialasishkumar you'll need to sign the CLA, see #148309 (comment). |
Author
|
Done |
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.
Handle recursion errors raised by the debug-only cross-check in the specialized latin, compact-int, and float comparison helpers used by list sorting. When that verification path hits the C stack overflow guard, clear the resulting exception so the optimized comparison remains side-effect free.
I did not add a targeted regression test because the failure is in a debug-only verification path that is only triggered when the extra
PyObject_RichCompareBool()call hits the C stack guard; I could not produce a stable Python-level reproducer for that condition.Tests:
./python -m test -j1 test_sort test_richcmpunsafe_{latin,long,float}_comparehave anassertthat assumesPyObject_RichCompareBoolcan't fail #148268