Skip to content
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

Don't assume FILE_ID_BOTH_DIR_INFO will be aligned #104558

Merged
merged 2 commits into from
Nov 20, 2022

Conversation

thomcc
Copy link
Member

@thomcc thomcc commented Nov 18, 2022

Fixes #104530. See that issue for info.

r? @ChrisDenton

@rustbot rustbot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-libs Relevant to the library team, which will review and decide on the PR/issue. labels Nov 18, 2022
@rustbot
Copy link
Collaborator

rustbot commented Nov 18, 2022

Hey! It looks like you've submitted a new PR for the library teams!

If this PR contains changes to any rust-lang/rust public library APIs then please comment with @rustbot label +T-libs-api -T-libs to tag it appropriately. If this PR contains changes to any unstable APIs please edit the PR description to add a link to the relevant API Change Proposal or create one if you haven't already. If you're unsure where your change falls no worries, just leave it as is and the reviewer will take a look and make a decision to forward on if necessary.

Examples of T-libs-api changes:

  • Stabilizing library features
  • Introducing insta-stable changes such as new implementations of existing stable traits on existing stable types
  • Introducing new or changing existing unstable library APIs (excluding permanently unstable features / features without a tracking issue)
  • Changing public documentation in ways that create new stability guarantees
  • Changing observable runtime behavior of library APIs

@thomcc thomcc added the beta-nominated Nominated for backporting to the compiler in the beta channel. label Nov 18, 2022
@thomcc
Copy link
Member Author

thomcc commented Nov 18, 2022

Nominating for beta backport since it seems pretty bad. I'm hoping it's just an issue with sketchy drivers, but who knows.

@thomcc
Copy link
Member Author

thomcc commented Nov 18, 2022

I think we should consider using a different directory iteration method (FindNextFileW, like we use for the other directory iteration), but I'm not sure if there's a reason we're doing it the way we are currently (perhaps stability in the face of deletions?)

That said, I know remove_dir_all is a pretty tricky function, and has undergone a few rewrites. I definitely don't feel like making significant changes to it here would be justified (especially since I've requested a backport), and could easily cause more problems than it solves.

@ChrisDenton
Copy link
Member

FindFirstFileW/FindNextFileW takes a file path so it's a non-starter for remove_dir_all given the security considerations. And in any case FindFirstFileW/FindNextFileW will ultimately be using something similar to what remove_dir_all is using (well the NT equivalent) under the hood.

There are various other things we could do (like doing a memcpy if unaligned) but I do agree we should keep this small for now. So...

@bors r+

@bors
Copy link
Contributor

bors commented Nov 18, 2022

📌 Commit b881f66 has been approved by ChrisDenton

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 Nov 18, 2022
@thomcc
Copy link
Member Author

thomcc commented Nov 18, 2022

Ah, good points!

@thomcc
Copy link
Member Author

thomcc commented Nov 18, 2022

like doing a memcpy if unaligned

I decided to do this. It's not much code, but probably warrants re-review.

@bors r-

@bors bors added S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. and removed S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. labels Nov 18, 2022
@ChrisDenton
Copy link
Member

Ok, this look fine.

@bors r+

@bors
Copy link
Contributor

bors commented Nov 18, 2022

📌 Commit 56888c1 has been approved by ChrisDenton

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-author Status: This is awaiting some action (such as code changes or more information) from the author. labels Nov 18, 2022
@thomcc
Copy link
Member Author

thomcc commented Nov 18, 2022

I'll leave the backport request present, but it's tempting to remove it: it's worth noting that this appears to be due to a bug in a particular sandboxing application (Sandboxie), rather than a bug in the stdlib itself.

These sorts of bugs are somewhat unsurprising on Windows, given how arbitrary things insert themselves in various places, but I'm unconvinced it's actually worth taking that seriously as a result. Still, I'll leave the request present so we can discuss in the meeting. It's harmless enough either way.

bors added a commit to rust-lang-ci/rust that referenced this pull request Nov 20, 2022
…iaskrgr

Rollup of 6 pull requests

Successful merges:

 - rust-lang#104537 (fix std::thread docs are unclear regarding stack sizes)
 - rust-lang#104558 (Don't assume `FILE_ID_BOTH_DIR_INFO` will be aligned)
 - rust-lang#104564 (interpret: use Either over Result when it is not representing an error condition)
 - rust-lang#104568 (clarify that realloc refreshes pointer provenance even when the allocation remains in-place)
 - rust-lang#104611 (rustdoc: use real buttons for scrape examples controls)
 - rust-lang#104640 (Migrate kdb style to CSS variables)

Failed merges:

r? `@ghost`
`@rustbot` modify labels: rollup
@bors bors merged commit 379d336 into rust-lang:master Nov 20, 2022
@rustbot rustbot added this to the 1.67.0 milestone Nov 20, 2022
@thomcc thomcc deleted the unalign-diriter branch November 23, 2022 06:57
@m-ou-se m-ou-se added the beta-accepted Accepted for backporting to the compiler in the beta channel. label Dec 7, 2022
@pietroalbini pietroalbini removed the beta-nominated Nominated for backporting to the compiler in the beta channel. label Dec 11, 2022
bors added a commit to rust-lang-ci/rust that referenced this pull request Dec 12, 2022
…troalbini

[stable] Prepare 1.66.0 release

This PR prepares the artifacts for the 1.66.0 release. The following PRs have been backported:

* rust-lang#104782
* rust-lang#105023
* rust-lang#104558
* rust-lang#104610
* rust-lang#103989
* rust-lang#104650
* rust-lang#105539
* rust-lang#105477

r? `@ghost`
badboy added a commit to mozilla/glean that referenced this pull request Mar 14, 2023
This avoids the Windows dependencies.
The bug that caused us to switch to the crate in the first place was
addressed in Rust 1.66+ (rust-lang/rust#104558)
badboy added a commit to mozilla/glean that referenced this pull request Mar 14, 2023
This avoids the Windows dependencies.
The bug that caused us to switch to the crate in the first place was
addressed in Rust 1.66+ (rust-lang/rust#104558)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
beta-accepted Accepted for backporting to the compiler in the beta channel. S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. 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.

std::fs::remove_dir_all occasionally panics on Windows with assertion failed: info.is_aligned()
6 participants