Convert UNIX std::fs::remove_dir_all()
from recursive to looping
#93473
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.
std::fs::remove_dir_all()
is recursive and can run out of stack space for deep directory hierarchies. This uses @cuviper's looped implementation with an on-heap stack to avoid running out of stack space before running out of file descriptors. As a drive-by fix it reduces the Macos x86-64 special case code.For easier review the Macos x86-64 commits are broken up in two. One removes the Macos x86-64 special case completely, the second adds more fine-grained special-case handling back.
Further work to make
remove_dir_all()
use only a fixed number of open file descriptors is planned, see #93160.