Skip to content

Fix off-by-one error causing slice::sort to abort the program #136163

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Feb 1, 2025

Conversation

uellenberg
Copy link
Contributor

Fixes #136103.
Based on the analysis by @jonathan-gruber-jg and @orlp.

@rustbot
Copy link
Collaborator

rustbot commented Jan 28, 2025

r? @chenyukang

rustbot has assigned @chenyukang.
They will have a look at your PR within the next two weeks and either review your PR or reassign to another reviewer.

Use r? to explicitly pick a reviewer

@rustbot rustbot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. T-libs Relevant to the library team, which will review and decide on the PR/issue. labels Jan 28, 2025
@workingjubilee
Copy link
Member

r? libs

@orlp
Copy link
Contributor

orlp commented Jan 28, 2025

Looks good to me, @Voultapher any thoughts?

@Voultapher
Copy link
Contributor

I'm suggesting minor changes, the fix itself looks good.

@uellenberg uellenberg force-pushed the driftsort-off-by-one branch from 8ffa11c to 37abe21 Compare January 28, 2025 22:50
@uellenberg
Copy link
Contributor Author

Some of the comments mention MIN_SMALL_SORT_SCRATCH_LEN but I don't see that actually defined anywhere, nor used in any code. Was this renamed at some point, or am I missing something?

@uellenberg uellenberg force-pushed the driftsort-off-by-one branch from 37abe21 to ea42603 Compare January 29, 2025 00:30
Copy link
Contributor

@Voultapher Voultapher left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM, thanks for the fix @uellenberg

@Voultapher
Copy link
Contributor

Some of the comments mention MIN_SMALL_SORT_SCRATCH_LEN but I don't see that actually defined anywhere, nor used in any code. Was this renamed at some point, or am I missing something?

In the original driftsort repository this constant was defined as pub const MIN_SMALL_SORT_SCRATCH_LEN: usize = i32::SMALL_SORT_THRESHOLD + 16;, while merging the driftsort and ipnsort code bases it was renamed to SMALL_SORT_GENERAL_SCRATCH_LEN. I think this kind of coment fixup doesn't need a separate PR, so feel free to do it here.

@uellenberg uellenberg force-pushed the driftsort-off-by-one branch from ea42603 to 1565254 Compare January 29, 2025 07:40
@Voultapher
Copy link
Contributor

Could we maybe change the PR title, crash usually suggests UB, here we are just running into assert style function preconditions, in this case not using panics and instead abort to save on binary-size.

@uellenberg uellenberg changed the title Fix off-by-one error causing driftsort to crash Fix off-by-one error causing slice::sort to abort the program Jan 30, 2025
@Mark-Simulacrum
Copy link
Member

@bors r+

@bors
Copy link
Collaborator

bors commented Jan 31, 2025

📌 Commit 1565254 has been approved by Mark-Simulacrum

It is now in the queue for this repository.

@bors bors added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Jan 31, 2025
@bors bors merged commit f90c321 into rust-lang:master Feb 1, 2025
6 checks passed
@rustbot rustbot added this to the 1.86.0 milestone Feb 1, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. T-libs Relevant to the library team, which will review and decide on the PR/issue.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Sorting a Slice Raises an Illegal Instruction Signal
8 participants