gh-40928: Avoid swallowing AlarmInterrupt in matrix destructor - #42609
Open
cxzhong wants to merge 1 commit into
Open
gh-40928: Avoid swallowing AlarmInterrupt in matrix destructor#42609cxzhong wants to merge 1 commit into
cxzhong wants to merge 1 commit into
Conversation
|
Documentation preview for this PR (built with commit fe1e853; changes) is ready! 🎉 |
Member
|
Test failure is real but is unrelated as it occurs on develop. Reported in #42623. |
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.
Fixes #40928.
Root cause
linear_code.pydeliberately interrupts a costly canonical-representativecomputation after 0.5 seconds. When the alarm arrived while a temporary FLINT
matrix was being destroyed,
Matrix_modn_dense_flint.__dealloc__entered asig_on()region. This raisedAlarmInterruptfrom the destructor, where theexception could not propagate and was reported as ignored. Because the alarm
was one-shot, the computation then continued until the doctest file timeout.
This follows #18087, which established that
__dealloc__methods cannot raiseexceptions and therefore must not enter
sig_on()regions.Changes
nmod_mat_clear()insig_on()/sig_off()during destruction._shift_mod'spreshifttemporary explicitly, eliminating thecompiler's
-Wmaybe-uninitializedwarning.Validation
matrix_modn_dense_flintsuccessfully; the compiler warning is gone.src/sage/matrix/matrix_modn_dense_flint.pyx: 175 doctests passed.src/sage/coding/linear_code.py: 424 doctests passed.timeouts; all passed.
Local validation used Linux with Python 3.12; CI will additionally exercise the
macOS/Python 3.14 configuration where this occurred frequently.