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

Detect filesystem loop during walking the projects #10188

Merged
merged 3 commits into from
Dec 16, 2021

Conversation

weihanglo
Copy link
Member

@weihanglo weihanglo commented Dec 10, 2021

Resolves #9528

This PR also adds a new dependency same-file but since it's already a
dependency of cargo-util, so nothing added actually.

Use walkdir to detect filesystem loop and gain performance boost!

@rust-highfive
Copy link

r? @alexcrichton

(rust-highfive has picked a reviewer for you, use r? to override)

@rust-highfive rust-highfive added the S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. label Dec 10, 2021
@weihanglo
Copy link
Member Author

Running cargo doc in root after this fix looks like:

root@4145378fddab:/# ./project/target/debug/cargo doc
error: failed to determine package fingerprint for documenting foo v0.1.0 (/)

Caused by:
  failed to determine the most recently modified file in /

Caused by:
  failed to determine list of files in /

Caused by:
  cannot read "/proc/1/cwd"

Caused by:
  filesystem loop detected: `/proc/1/cwd` links to an ancestor `/`

I've tried using walkdir but found it hard to avoid multple calls on fs::metadata. This is the one with minimal changes I can think of at this moment. I notice that in walkdir, it introduces struct Ancestor to avoid slow open file ops on Windows. Should we need to do the same thing?

For removing unnecessary collect for some calls on PathSource::list_files, I found it not simple to convert it into callback/iterator flavor. The list_files_git is more complex . Will find a time to refactor it if possible.

Copy link
Member

@alexcrichton alexcrichton left a comment

Choose a reason for hiding this comment

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

I'm not personally too familiar with walkdir::Ancestor but I think it'd be pretty reasonable to switch Cargo over to using walkdir. I suspect that it'd be nice to offload some of the more nitty-gritty here and getting nice perf wins would also be good.

src/cargo/sources/path.rs Outdated Show resolved Hide resolved
@weihanglo
Copy link
Member Author

I'm not personally too familiar with walkdir::Ancestor but I think it'd be pretty reasonable to switch Cargo over to using walkdir. I suspect that it'd be nice to offload some of the more nitty-gritty here and getting nice perf wins would also be good.

I've done the walkdir version as well. Generally it looks nicer, but there is one extra call on path.is_dir() for each entries. Not sure what's the impact of the perf (maybe no?).

@alexcrichton
Copy link
Member

I think the walkdir version actually looks quite good as well. Could the path.is_dir() be replaced with a test on entry.file_type() perhaps?

Use unordered since order of warning differs on each platform.
Since `StripPrefixError` returned from [`Path::strip_prefix`] is just an
error with "prefix not found. We can simply return false for it.

Also use `Match::is_ignore` instead of manually matching.

[`Path::strip_prefix`]: https://doc.rust-lang.org/1.57.0/std/path/struct.Path.html#method.strip_prefix
@weihanglo
Copy link
Member Author

weihanglo commented Dec 15, 2021

Note that the real performance varies from case to case.

entry.file_type().is_dir() works! Thanks for the suggestion.

Below are traces for each implementation.

  • Command: dtruss cargo package --list
  • Test case: package::filesystem_loop
  • Environment: macOS 12.1

👑 walkdir with entry.file_type()

Changes: https://git.io/JDu0c

Total syscalls: 42

  • close_nocancel: 10
  • fstat64:: 4
  • fstatfs64: 6
  • getdirentries64: 5
  • lstat64: 1
  • open: 4
  • open_nocancel: 6
  • stat64: 6
Click to view traces
lstat64("/Users/weihanglo/wd/contrib/cargo/target/tmp/cit/t0/foo\0", 0x7FF7BB4E3CC0, 0x0)                = 0 0
open_nocancel("/Users/weihanglo/wd/contrib/cargo/target/tmp/cit/t0/foo\0", 0x1100004, 0x0)               = 3 0
fstatfs64(0x3, 0x7FF7BB4E2AE0, 0x0)              = 0 0
getdirentries64(0x3, 0x7FE97E016C00, 0x2000)             = 240 0
open_nocancel("/Users/weihanglo/wd/contrib/cargo/target/tmp/cit/t0/foo/target\0", 0x1100004, 0x0)                = 4 0
fstatfs64(0x4, 0x7FF7BB4E2AE0, 0x0)              = 0 0
stat64("/Users/weihanglo/wd/contrib/cargo/target/tmp/cit/t0/foo/target/Cargo.toml\0", 0x7FF7BB4E4F70, 0x0)               = -1 2
close_nocancel(0x4)              = 0 0
open_nocancel("/Users/weihanglo/wd/contrib/cargo/target/tmp/cit/t0/foo/a\0", 0x1100004, 0x0)             = 4 0
fstatfs64(0x4, 0x7FF7BB4E2AE0, 0x0)              = 0 0
stat64("/Users/weihanglo/wd/contrib/cargo/target/tmp/cit/t0/foo/a/Cargo.toml\0", 0x7FF7BB4E4F70, 0x0)            = -1 2
getdirentries64(0x4, 0x7FE97F814800, 0x2000)             = 96 0
open_nocancel("/Users/weihanglo/wd/contrib/cargo/target/tmp/cit/t0/foo/a/b\0", 0x1100004, 0x0)           = 5 0
fstatfs64(0x5, 0x7FF7BB4E2AE0, 0x0)              = 0 0
stat64("/Users/weihanglo/wd/contrib/cargo/target/tmp/cit/t0/foo/a/b/Cargo.toml\0", 0x7FF7BB4E4F70, 0x0)          = -1 2
getdirentries64(0x5, 0x7FE97F816800, 0x2000)             = 96 0
open_nocancel("/Users/weihanglo/wd/contrib/cargo/target/tmp/cit/t0/foo/a/b/c\0", 0x1100004, 0x0)                 = 6 0
fstatfs64(0x6, 0x7FF7BB4E2AE0, 0x0)              = 0 0
stat64("/Users/weihanglo/wd/contrib/cargo/target/tmp/cit/t0/foo/a/b/c/Cargo.toml\0", 0x7FF7BB4E4F70, 0x0)                = -1 2
getdirentries64(0x6, 0x7FE97F818800, 0x2000)             = 96 0
open_nocancel("/Users/weihanglo/wd/contrib/cargo/target/tmp/cit/t0/foo/a/b/c/d\0", 0x1100004, 0x0)               = 7 0
fstatfs64(0x7, 0x7FF7BB4E2AE0, 0x0)              = 0 0
stat64("/Users/weihanglo/wd/contrib/cargo/target/tmp/cit/t0/foo/a/b/c/d/Cargo.toml\0", 0x7FF7BB4E4F70, 0x0)              = -1 2
getdirentries64(0x7, 0x7FE97F81A800, 0x2000)             = 96 0
stat64("/Users/weihanglo/wd/contrib/cargo/target/tmp/cit/t0/foo/a/b/c/d/foo\0", 0x7FF7BB4E2D80, 0x0)             = 0 0
open("/Users/weihanglo/wd/contrib/cargo/target/tmp/cit/t0/foo/a/b/c/d/foo\0", 0x1000000, 0x0)            = 8 0
fstat64(0x8, 0x7FF7BB4E2DA0, 0x0)                = 0 0
open("/Users/weihanglo/wd/contrib/cargo/target/tmp/cit/t0/foo/a/b/c/d\0", 0x1000000, 0x0)                = 9 0
fstat64(0x9, 0x7FF7BB4E2CC0, 0x0)                = 0 0
close_nocancel(0x9)              = 0 0
open("/Users/weihanglo/wd/contrib/cargo/target/tmp/cit/t0/foo/a/b/c\0", 0x1000000, 0x0)          = 9 0
fstat64(0x9, 0x7FF7BB4E2CC0, 0x0)                = 0 0
close_nocancel(0x9)              = 0 0
open("/Users/weihanglo/wd/contrib/cargo/target/tmp/cit/t0/foo/a/b\0", 0x1000000, 0x0)            = 9 0
fstat64(0x9, 0x7FF7BB4E2CC0, 0x0)  
close_nocancel(0x9)              = 0 0
close_nocancel(0x8)              = 0 0
close_nocancel(0x3)              = 0 0
close_nocancel(0x4)              = 0 0
close_nocancel(0x5)              = 0 0
close_nocancel(0x6)              = 0 0
close_nocancel(0x7)              = 0 0

walkdir without entry.file_type()

Changes: https://git.io/JDuR1

Total syscalls: 57

  • close_nocancel: 10
  • fstat64:: 4
  • fstatfs64: 6
  • getdirentries64: 5
  • lstat64: 1
  • open: 4
  • open_nocancel: 6
  • stat64: 21
Click to view traces
lstat64("/Users/weihanglo/wd/contrib/cargo/target/tmp/cit/t0/foo\0", 0x7FF7B248FCC0, 0x0)                = 0 0
open_nocancel("/Users/weihanglo/wd/contrib/cargo/target/tmp/cit/t0/foo\0", 0x1100004, 0x0)               = 3 0
fstatfs64(0x3, 0x7FF7B248EAE0, 0x0)              = 0 0
stat64("/Users/weihanglo/wd/contrib/cargo/target/tmp/cit/t0/foo\0", 0x7FF7B2491070, 0x0)                 = 0 0
stat64("/Users/weihanglo/wd/contrib/cargo/target/tmp/cit/t0/foo\0", 0x7FF7B2491460, 0x0)                 = 0 0
getdirentries64(0x3, 0x7FF3F3811000, 0x2000)             = 240 0
stat64("/Users/weihanglo/wd/contrib/cargo/target/tmp/cit/t0/foo/Cargo.toml\0", 0x7FF7B2491070, 0x0)              = 0 0
stat64("/Users/weihanglo/wd/contrib/cargo/target/tmp/cit/t0/foo/Cargo.toml\0", 0x7FF7B2491460, 0x0)              = 0 0
open_nocancel("/Users/weihanglo/wd/contrib/cargo/target/tmp/cit/t0/foo/target\0", 0x1100004, 0x0)                = 4 0
fstatfs64(0x4, 0x7FF7B248EAE0, 0x0)              = 0 0
stat64("/Users/weihanglo/wd/contrib/cargo/target/tmp/cit/t0/foo/target\0", 0x7FF7B2491070, 0x0)          = 0 0
stat64("/Users/weihanglo/wd/contrib/cargo/target/tmp/cit/t0/foo/target/Cargo.toml\0", 0x7FF7B2490F70, 0x0)               = -1 2
close_nocancel(0x4)              = 0 0
stat64("/Users/weihanglo/wd/contrib/cargo/target/tmp/cit/t0/foo/Cargo.lock\0", 0x7FF7B2491070, 0x0)              = 0 0
stat64("/Users/weihanglo/wd/contrib/cargo/target/tmp/cit/t0/foo/Cargo.lock\0", 0x7FF7B2491460, 0x0)              = 0 0
open_nocancel("/Users/weihanglo/wd/contrib/cargo/target/tmp/cit/t0/foo/a\0", 0x1100004, 0x0)             = 4 0
fstatfs64(0x4, 0x7FF7B248EAE0, 0x0)              = 0 0
stat64("/Users/weihanglo/wd/contrib/cargo/target/tmp/cit/t0/foo/a\0", 0x7FF7B2491070, 0x0)               = 0 0
stat64("/Users/weihanglo/wd/contrib/cargo/target/tmp/cit/t0/foo/a/Cargo.toml\0", 0x7FF7B2490F70, 0x0)            = -1 2
stat64("/Users/weihanglo/wd/contrib/cargo/target/tmp/cit/t0/foo/a\0", 0x7FF7B2491460, 0x0)               = 0 0
getdirentries64(0x4, 0x7FF3F3813000, 0x2000)             = 96 0
open_nocancel("/Users/weihanglo/wd/contrib/cargo/target/tmp/cit/t0/foo/a/b\0", 0x1100004, 0x0)           = 5 0
fstatfs64(0x5, 0x7FF7B248EAE0, 0x0)              = 0 0
stat64("/Users/weihanglo/wd/contrib/cargo/target/tmp/cit/t0/foo/a/b\0", 0x7FF7B2491070, 0x0)             = 0 0
stat64("/Users/weihanglo/wd/contrib/cargo/target/tmp/cit/t0/foo/a/b/Cargo.toml\0", 0x7FF7B2490F70, 0x0)          = -1 2
stat64("/Users/weihanglo/wd/contrib/cargo/target/tmp/cit/t0/foo/a/b\0", 0x7FF7B2491460, 0x0)             = 0 0
getdirentries64(0x5, 0x7FF3F3808200, 0x2000)             = 96 0
open_nocancel("/Users/weihanglo/wd/contrib/cargo/target/tmp/cit/t0/foo/a/b/c\0", 0x1100004, 0x0)                 = 6 0
fstatfs64(0x6, 0x7FF7B248EAE0, 0x0)              = 0 0
stat64("/Users/weihanglo/wd/contrib/cargo/target/tmp/cit/t0/foo/a/b/c\0", 0x7FF7B2491070, 0x0)           = 0 0
stat64("/Users/weihanglo/wd/contrib/cargo/target/tmp/cit/t0/foo/a/b/c/Cargo.toml\0", 0x7FF7B2490F70, 0x0)                = -1 2
stat64("/Users/weihanglo/wd/contrib/cargo/target/tmp/cit/t0/foo/a/b/c\0", 0x7FF7B2491460, 0x0)           = 0 0
getdirentries64(0x6, 0x7FF3F380A200, 0x2000)             = 96 0
open_nocancel("/Users/weihanglo/wd/contrib/cargo/target/tmp/cit/t0/foo/a/b/c/d\0", 0x1100004, 0x0)               = 7 0
fstatfs64(0x7, 0x7FF7B248EAE0, 0x0)              = 0 0
stat64("/Users/weihanglo/wd/contrib/cargo/target/tmp/cit/t0/foo/a/b/c/d\0", 0x7FF7B2491070, 0x0)                 = 0 0
stat64("/Users/weihanglo/wd/contrib/cargo/target/tmp/cit/t0/foo/a/b/c/d/Cargo.toml\0", 0x7FF7B2490F70, 0x0)              = -1 2
stat64("/Users/weihanglo/wd/contrib/cargo/target/tmp/cit/t0/foo/a/b/c/d\0", 0x7FF7B2491460, 0x0)                 = 0 0
getdirentries64(0x7, 0x7FF3F3815600, 0x2000)             = 96 0
stat64("/Users/weihanglo/wd/contrib/cargo/target/tmp/cit/t0/foo/a/b/c/d/foo\0", 0x7FF7B248ED80, 0x0)             = 0 0
open("/Users/weihanglo/wd/contrib/cargo/target/tmp/cit/t0/foo/a/b/c/d/foo\0", 0x1000000, 0x0)            = 8 0
fstat64(0x8, 0x7FF7B248EDA0, 0x0)                = 0 0
open("/Users/weihanglo/wd/contrib/cargo/target/tmp/cit/t0/foo/a/b/c/d\0", 0x1000000, 0x0)                = 9 0
fstat64(0x9, 0x7FF7B248ECC0, 0x0)                = 0 0
close_nocancel(0x9)              = 0 0
open("/Users/weihanglo/wd/contrib/cargo/target/tmp/cit/t0/foo/a/b/c\0", 0x1000000, 0x0)          = 9 0
fstat64(0x9, 0x7FF7B248ECC0, 0x0)                = 0 0
close_nocancel(0x9)              = 0 0
open("/Users/weihanglo/wd/contrib/cargo/target/tmp/cit/t0/foo/a/b\0", 0x1000000, 0x0)            = 9 0
fstat64(0x9, 0x7FF7B248ECC0, 0x0)                = 0 0
close_nocancel(0x9)              = 0 0
close_nocancel(0x8)              = 0 0
close_nocancel(0x3)              = 0 0
close_nocancel(0x4)              = 0 0
close_nocancel(0x5)              = 0 0
close_nocancel(0x6)              = 0 0
close_nocancel(0x7)              = 0 0

Previous implementation

Changes: https://git.io/JDu0q

Total syscalls: 86

  • close_nocancel: 23
  • fstat64:: 18
  • fstatfs64: 5
  • getdirentries64: 5
  • lstat64: 0
  • open: 18
  • open_nocancel: 5
  • stat64: 12
Click to view traces
stat64("/Users/weihanglo/wd/contrib/cargo/target/tmp/cit/t0/foo\0", 0x7FF7B381F780, 0x0)                 = 0 0
open_nocancel("/Users/weihanglo/wd/contrib/cargo/target/tmp/cit/t0/foo\0", 0x1100004, 0x0)               = 3 0
fstatfs64(0x3, 0x7FF7B381EF40, 0x0)              = 0 0
open("/Users/weihanglo/wd/contrib/cargo/target/tmp/cit/t0/foo\0", 0x1000000, 0x0)                = 4 0
fstat64(0x4, 0x7FF7B381F440, 0x0)                = 0 0
getdirentries64(0x3, 0x7FB975019000, 0x2000)             = 240 0
stat64("/Users/weihanglo/wd/contrib/cargo/target/tmp/cit/t0/foo/Cargo.toml\0", 0x7FF7B381F310, 0x0)              = 0 0
stat64("/Users/weihanglo/wd/contrib/cargo/target/tmp/cit/t0/foo/Cargo.lock\0", 0x7FF7B381F310, 0x0)              = 0 0
stat64("/Users/weihanglo/wd/contrib/cargo/target/tmp/cit/t0/foo/a\0", 0x7FF7B381F310, 0x0)               = 0 0
open("/Users/weihanglo/wd/contrib/cargo/target/tmp/cit/t0/foo/a\0", 0x1000000, 0x0)              = 5 0
fstat64(0x5, 0x7FF7B381ED30, 0x0)                = 0 0
close_nocancel(0x5)              = 0 0
stat64("/Users/weihanglo/wd/contrib/cargo/target/tmp/cit/t0/foo/a/Cargo.toml\0", 0x7FF7B381F210, 0x0)            = -1 2
open_nocancel("/Users/weihanglo/wd/contrib/cargo/target/tmp/cit/t0/foo/a\0", 0x1100004, 0x0)             = 5 0
fstatfs64(0x5, 0x7FF7B381EAD0, 0x0)              = 0 0
open("/Users/weihanglo/wd/contrib/cargo/target/tmp/cit/t0/foo/a\0", 0x1000000, 0x0)              = 6 0
fstat64(0x6, 0x7FF7B381EFD0, 0x0)                = 0 0
getdirentries64(0x5, 0x7FB97501B000, 0x2000)             = 96 0
stat64("/Users/weihanglo/wd/contrib/cargo/target/tmp/cit/t0/foo/a/b\0", 0x7FF7B381EEA0, 0x0)             = 0 0
open("/Users/weihanglo/wd/contrib/cargo/target/tmp/cit/t0/foo/a/b\0", 0x1000000, 0x0)            = 7 0
fstat64(0x7, 0x7FF7B381E8C0, 0x0)                = 0 0
close_nocancel(0x7)              = 0 0
open("/Users/weihanglo/wd/contrib/cargo/target/tmp/cit/t0/foo/a/b\0", 0x1000000, 0x0)            = 7 0
fstat64(0x7, 0x7FF7B381E8C0, 0x0)                = 0 0
close_nocancel(0x7)              = 0 0
stat64("/Users/weihanglo/wd/contrib/cargo/target/tmp/cit/t0/foo/a/b/Cargo.toml\0", 0x7FF7B381EDA0, 0x0)          = -1 2
open_nocancel("/Users/weihanglo/wd/contrib/cargo/target/tmp/cit/t0/foo/a/b\0", 0x1100004, 0x0)           = 7 0
fstatfs64(0x7, 0x7FF7B381E660, 0x0)              = 0 0
open("/Users/weihanglo/wd/contrib/cargo/target/tmp/cit/t0/foo/a/b\0", 0x1000000, 0x0)            = 8 0
fstat64(0x8, 0x7FF7B381EB60, 0x0)                = 0 0
getdirentries64(0x7, 0x7FB97501D000, 0x2000)             = 96 0
stat64("/Users/weihanglo/wd/contrib/cargo/target/tmp/cit/t0/foo/a/b/c\0", 0x7FF7B381EA30, 0x0)           = 0 0
open("/Users/weihanglo/wd/contrib/cargo/target/tmp/cit/t0/foo/a/b/c\0", 0x1000000, 0x0)          = 9 0
fstat64(0x9, 0x7FF7B381E450, 0x0)                = 0 0
close_nocancel(0x9)              = 0 0
open("/Users/weihanglo/wd/contrib/cargo/target/tmp/cit/t0/foo/a/b/c\0", 0x1000000, 0x0)          = 9 0
fstat64(0x9, 0x7FF7B381E450, 0x0)                = 0 0
close_nocancel(0x9)              = 0 0
open("/Users/weihanglo/wd/contrib/cargo/target/tmp/cit/t0/foo/a/b/c\0", 0x1000000, 0x0)          = 9 0
fstat64(0x9, 0x7FF7B381E450, 0x0)                = 0 0
close_nocancel(0x9)              = 0 0
stat64("/Users/weihanglo/wd/contrib/cargo/target/tmp/cit/t0/foo/a/b/c/Cargo.toml\0", 0x7FF7B381E930, 0x0)                = -1 2
open_nocancel("/Users/weihanglo/wd/contrib/cargo/target/tmp/cit/t0/foo/a/b/c\0", 0x1100004, 0x0)                 = 9 0
fstatfs64(0x9, 0x7FF7B381E1F0, 0x0)              = 0 0
open("/Users/weihanglo/wd/contrib/cargo/target/tmp/cit/t0/foo/a/b/c\0", 0x1000000, 0x0)          = 10 0
fstat64(0xA, 0x7FF7B381E6F0, 0x0)                = 0 0
getdirentries64(0x9, 0x7FB97501F000, 0x2000)             = 96 0
stat64("/Users/weihanglo/wd/contrib/cargo/target/tmp/cit/t0/foo/a/b/c/d\0", 0x7FF7B381E5C0, 0x0)                 = 0 0
open("/Users/weihanglo/wd/contrib/cargo/target/tmp/cit/t0/foo/a/b/c/d\0", 0x1000000, 0x0)                = 11 0
fstat64(0xB, 0x7FF7B381DFE0, 0x0)                = 0 0
close_nocancel(0xB)              = 0 0
open("/Users/weihanglo/wd/contrib/cargo/target/tmp/cit/t0/foo/a/b/c/d\0", 0x1000000, 0x0)                = 11 0
fstat64(0xB, 0x7FF7B381DFE0, 0x0)                = 0 0
close_nocancel(0xB)              = 0 0
open("/Users/weihanglo/wd/contrib/cargo/target/tmp/cit/t0/foo/a/b/c/d\0", 0x1000000, 0x0)                = 11 0
fstat64(0xB, 0x7FF7B381DFE0, 0x0)                = 0 0
close_nocancel(0xB)              = 0 0
open("/Users/weihanglo/wd/contrib/cargo/target/tmp/cit/t0/foo/a/b/c/d\0", 0x1000000, 0x0)                = 11 0
fstat64(0xB, 0x7FF7B381DFE0, 0x0)                = 0 0
close_nocancel(0xB)              = 0 0
stat64("/Users/weihanglo/wd/contrib/cargo/target/tmp/cit/t0/foo/a/b/c/d/Cargo.toml\0", 0x7FF7B381E4C0, 0x0)              = -1 2
open_nocancel("/Users/weihanglo/wd/contrib/cargo/target/tmp/cit/t0/foo/a/b/c/d\0", 0x1100004, 0x0)               = 11 0
fstatfs64(0xB, 0x7FF7B381DD80, 0x0)              = 0 0
open("/Users/weihanglo/wd/contrib/cargo/target/tmp/cit/t0/foo/a/b/c/d\0", 0x1000000, 0x0)                = 12 0
fstat64(0xC, 0x7FF7B381E280, 0x0)                = 0 0
getdirentries64(0xB, 0x7FB975021000, 0x2000)             = 96 0
stat64("/Users/weihanglo/wd/contrib/cargo/target/tmp/cit/t0/foo/a/b/c/d/foo\0", 0x7FF7B381E150, 0x0)             = 0 0
open("/Users/weihanglo/wd/contrib/cargo/target/tmp/cit/t0/foo/a/b/c/d/foo\0", 0x1000000, 0x0)            = 13 0
fstat64(0xD, 0x7FF7B381DB70, 0x0)                = 0 0
close_nocancel(0xD)              = 0 0
open("/Users/weihanglo/wd/contrib/cargo/target/tmp/cit/t0/foo/a/b/c/d/foo\0", 0x1000000, 0x0)            = 13 0
fstat64(0xD, 0x7FF7B381DB70, 0x0)                = 0 0
close_nocancel(0xD)              = 0 0
open("/Users/weihanglo/wd/contrib/cargo/target/tmp/cit/t0/foo/a/b/c/d/foo\0", 0x1000000, 0x0)            = 13 0
fstat64(0xD, 0x7FF7B381DB70, 0x0)                = 0 0
close_nocancel(0xD)              = 0 0
close_nocancel(0xB)              = 0 0
close_nocancel(0x9)              = 0 0
close_nocancel(0x7)              = 0 0
close_nocancel(0x5)              = 0 0
close_nocancel(0x3)              = 0 0
close_nocancel(0x4)              = 0 0
close_nocancel(0x6)              = 0 0
close_nocancel(0x8)              = 0 0
close_nocancel(0xA)              = 0 0
close_nocancel(0xC)              = 0 0

@alexcrichton
Copy link
Member

@bors: r+

This looks awesome, thanks!

@bors
Copy link
Collaborator

bors commented Dec 16, 2021

📌 Commit b49fe50 has been approved by alexcrichton

@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 Dec 16, 2021
@bors
Copy link
Collaborator

bors commented Dec 16, 2021

⌛ Testing commit b49fe50 with merge b05697d...

@bors
Copy link
Collaborator

bors commented Dec 16, 2021

☀️ Test successful - checks-actions
Approved by: alexcrichton
Pushing b05697d to master...

@bors bors merged commit b05697d into rust-lang:master Dec 16, 2021
matthiaskrgr added a commit to matthiaskrgr/rust that referenced this pull request Dec 17, 2021
Update cargo

8 commits in a359ce16073401f28b84840da85b268aa3d37c88..fcef61230c3b6213b6b0d233a36ba4ebd1649ec3
2021-12-14 18:40:22 +0000 to 2021-12-17 02:30:38 +0000
- Minor docs change for `cargo test --help` (rust-lang/cargo#10210)
- Make clippy happy (rust-lang/cargo#10205)
- Enhance descriptions of issue templates (rust-lang/cargo#10202)
- Add workaround for sporadic kills when building on Macos (rust-lang/cargo#10196)
- Detect filesystem loop during walking the projects (rust-lang/cargo#10188)
- Error about not having any crates with documentation (rust-lang/cargo#10204)
- Don't document libs with doc=false (rust-lang/cargo#10201)
- Bumps up tar to 0.4.36 (rust-lang/cargo#10198)
bors added a commit to rust-lang-ci/rust that referenced this pull request Dec 17, 2021
Update cargo

8 commits in a359ce16073401f28b84840da85b268aa3d37c88..fcef61230c3b6213b6b0d233a36ba4ebd1649ec3
2021-12-14 18:40:22 +0000 to 2021-12-17 02:30:38 +0000
- Minor docs change for `cargo test --help` (rust-lang/cargo#10210)
- Make clippy happy (rust-lang/cargo#10205)
- Enhance descriptions of issue templates (rust-lang/cargo#10202)
- Add workaround for sporadic kills when building on Macos (rust-lang/cargo#10196)
- Detect filesystem loop during walking the projects (rust-lang/cargo#10188)
- Error about not having any crates with documentation (rust-lang/cargo#10204)
- Don't document libs with doc=false (rust-lang/cargo#10201)
- Bumps up tar to 0.4.36 (rust-lang/cargo#10198)
@weihanglo weihanglo deleted the issue-9528 branch December 18, 2021 14:24
@ehuss ehuss added this to the 1.59.0 milestone Feb 6, 2022
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.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Cargo gets lost in the root of a Linux filesystem
5 participants