ls: uutils locales support causing excess of statx and readlink syscalls
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 24.1k
- Forks
- 2k
- Avg merge
- 1d 5h
- Merged PRs (30d)
- 365
Description
Q: After adopting my pending PRs, why would we still see an excess of syscalls for basic ls invocations (~45)?
For context, see my pending PRs:
A: It seems as if perhaps uutils locales support causing excess of statx and readlink syscalls.
First, compare GNU to uutils:
strace -c ~/program/coreutils/target/release/ls .
...
% time seconds usecs/call calls errors syscall
------ ----------- ----------- --------- --------- ------------------
31.06 0.000837 837 1 execve
12.65 0.000341 26 13 mmap
9.61 0.000259 13 19 14 readlink
8.16 0.000220 31 7 2 openat
6.60 0.000178 13 13 7 statx
4.71 0.000127 25 5 read
4.34 0.000117 23 5 mprotect
3.30 0.000089 22 4 brk
2.63 0.000071 35 2 getdents64
2.41 0.000065 32 2 munmap
2.26 0.000061 8 7 rt_sigaction
2.00 0.000054 10 5 close
1.97 0.000053 10 5 fstat
1.30 0.000035 35 1 write
1.00 0.000027 13 2 pread64
0.89 0.000024 8 3 sigaltstack
0.74 0.000020 20 1 1 access
0.71 0.000019 9 2 prlimit64
0.67 0.000018 18 1 poll
0.52 0.000014 2 6 ioctl
0.45 0.000012 6 2 getrandom
0.41 0.000011 11 1 sched_getaffinity
0.37 0.000010 10 1 newfstatat
0.33 0.000009 9 1 arch_prctl
0.30 0.000008 8 1 set_tid_address
0.30 0.000008 8 1 set_robust_list
0.30 0.000008 8 1 rseq
------ ----------- ----------- --------- --------- ------------------
100.00 0.002695 24 112 24 total
strace -c ls .
...
% time seconds usecs/call calls errors syscall
------ ----------- ----------- --------- --------- ----------------
37.63 0.000818 818 1 execve
21.44 0.000466 25 18 mmap
7.73 0.000168 24 7 openat
7.31 0.000159 19 8 fstat
4.69 0.000102 20 5 read
4.37 0.000095 31 3 write
4.37 0.000095 47 2 getdents64
4.32 0.000094 10 9 close
2.12 0.000046 9 5 mprotect
1.56 0.000034 17 2 2 access
1.15 0.000025 12 2 pread64
0.83 0.000018 9 2 ioctl
0.64 0.000014 14 1 statx
0.41 0.000009 3 3 brk
0.41 0.000009 9 1 arch_prctl
0.37 0.000008 8 1 set_tid_address
0.32 0.000007 7 1 set_robust_list
0.32 0.000007 7 1 rseq
0.00 0.000000 0 1 munmap
0.00 0.000000 0 2 2 statfs
0.00 0.000000 0 1 prlimit64
0.00 0.000000 0 1 getrandom
------ ----------- ----------- --------- --------- ----------------
100.00 0.002174 28 77 4 total
Next I'd ask: Who is causing the excess of statx and readlink calls?
strace -k -e statx,readlink ~/program/coreutils/target/release/ls .
readlink("/proc/self/exe", "/srv/program/coreutils/target/re"..., 256) = 40
> /usr/lib/x86_64-linux-gnu/libc.so.6(readlink+0xb) [0x11bb2b]
> /srv/program/coreutils/target/release/ls(std::sys::fs::unix::readlink+0x5b) [0x19061b]
> /srv/program/coreutils/target/release/ls(std::env::current_exe+0xc9) [0x190389]
> /srv/program/coreutils/target/release/ls(uucore::mods::locale::get_locales_dir+0x24) [0x1fb904]
statx(AT_FDCWD, "/srv/program/coreutils/target/release/locales/ls", AT_STATX_SYNC_AS_STAT, STATX_ALL, 0x7ffe06221660) = -1 ENOENT (No such file or directory)
> /usr/lib/x86_64-linux-gnu/libc.so.6(statx+0xe) [0x11bf4e]
> /srv/program/coreutils/target/release/ls(std::sys::fs::unix::try_statx+0xb5) [0x18f025]
> /srv/program/coreutils/target/release/ls(std::sys::fs::metadata+0x159) [0x18ee89]
> /srv/program/coreutils/target/release/ls(uucore::mods::locale::get_locales_dir+0x215) [0x1fbaf5]
statx(0, NULL, AT_STATX_SYNC_AS_STAT, STATX_ALL, NULL) = -1 EFAULT (Bad address)
> /usr/lib/x86_64-linux-gnu/libc.so.6(statx+0xe) [0x11bf4e]
> /srv/program/coreutils/target/release/ls(std::sys::fs::unix::try_statx+0x285) [0x18f1f5]
> /srv/program/coreutils/target/release/ls(std::sys::fs::metadata+0x159) [0x18ee89]
> /srv/program/coreutils/target/release/ls(uucore::mods::locale::get_locales_dir+0x215) [0x1fbaf5]
statx(AT_FDCWD, "/srv/program/coreutils/target/share/locales/ls", AT_STATX_SYNC_AS_STAT, STATX_ALL, 0x7ffe06221660) = -1 ENOENT (No such file or directory)
> /usr/lib/x86_64-linux-gnu/libc.so.6(statx+0xe) [0x11bf4e]
> /srv/program/coreutils/target/release/ls(std::sys::fs::unix::try_statx+0xb5) [0x18f025]
> /srv/program/coreutils/target/release/ls(std::sys::fs::metadata+0x159) [0x18ee89]
> /srv/program/coreutils/target/release/ls(uucore::mods::locale::get_locales_dir+0x453) [0x1fbd33]
statx(AT_FDCWD, "/srv/program/coreutils/target/release/ls", AT_STATX_SYNC_AS_STAT, STATX_ALL, {stx_mask=STATX_TYPE|STATX_MODE|STATX_NLINK|STATX_UID|STATX_GID|STATX_MTIME|STATX_CTIME|STATX_INO|STATX_SIZE|STATX_BLOCKS|STATX_BTIME|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFREG|0775, stx_size=2593792, ...}) = 0
> /usr/lib/x86_64-linux-gnu/libc.so.6(statx+0xe) [0x11bf4e]
> /srv/program/coreutils/target/release/ls(std::sys::fs::unix::try_statx+0xb5) [0x18f025]
> /srv/program/coreutils/target/release/ls(std::sys::fs::metadata+0x159) [0x18ee89]
> /srv/program/coreutils/target/release/ls(uucore::mods::locale::get_locales_dir+0x50a) [0x1fbdea]
readlink("/srv", 0x7ffe06221310, 1023) = -1 EINVAL (Invalid argument)
> /usr/lib/x86_64-linux-gnu/libc.so.6(readlink+0xb) [0x11bb2b]
> /usr/lib/x86_64-linux-gnu/libc.so.6(realpath+0x3b0) [0x46ae0]
> /srv/program/coreutils/target/release/ls(std::sys::fs::unix::canonicalize+0x19) [0x1722a9]
> /srv/program/coreutils/target/release/ls(std::sys::fs::canonicalize+0x137) [0x19a507]
> /srv/program/coreutils/target/release/ls(uucore::mods::locale::create_bundle+0x231) [0x1fc331]
readlink("/srv/program", 0x7ffe06221310, 1023) = -1 EINVAL (Invalid argument)
> /usr/lib/x86_64-linux-gnu/libc.so.6(readlink+0xb) [0x11bb2b]
> /usr/lib/x86_64-linux-gnu/libc.so.6(realpath+0x3b0) [0x46ae0]
> /srv/program/coreutils/target/release/ls(std::sys::fs::unix::canonicalize+0x19) [0x1722a9]
> /srv/program/coreutils/target/release/ls(std::sys::fs::canonicalize+0x137) [0x19a507]
> /srv/program/coreutils/target/release/ls(uucore::mods::locale::create_bundle+0x231) [0x1fc331]
readlink("/srv/program/coreutils", 0x7ffe06221310, 1023) = -1 EINVAL (Invalid argument)
> /usr/lib/x86_64-linux-gnu/libc.so.6(readlink+0xb) [0x11bb2b]
> /usr/lib/x86_64-linux-gnu/libc.so.6(realpath+0x3b0) [0x46ae0]
> /srv/program/coreutils/target/release/ls(std::sys::fs::unix::canonicalize+0x19) [0x1722a9]
> /srv/program/coreutils/target/release/ls(std::sys::fs::canonicalize+0x137) [0x19a507]
> /srv/program/coreutils/target/release/ls(uucore::mods::locale::create_bundle+0x231) [0x1fc331]
readlink("/srv/program/coreutils/target", 0x7ffe06221310, 1023) = -1 EINVAL (Invalid argument)
> /usr/lib/x86_64-linux-gnu/libc.so.6(readlink+0xb) [0x11bb2b]
> /usr/lib/x86_64-linux-gnu/libc.so.6(realpath+0x3b0) [0x46ae0]
> /srv/program/coreutils/target/release/ls(std::sys::fs::unix::canonicalize+0x19) [0x1722a9]
> /srv/program/coreutils/target/release/ls(std::sys::fs::canonicalize+0x137) [0x19a507]
> /srv/program/coreutils/target/release/ls(uucore::mods::locale::create_bundle+0x231) [0x1fc331]
readlink("/srv/program/coreutils/target/release", 0x7ffe06221310, 1023) = -1 EINVAL (Invalid argument)
> /usr/lib/x86_64-linux-gnu/libc.so.6(readlink+0xb) [0x11bb2b]
> /usr/lib/x86_64-linux-gnu/libc.so.6(realpath+0x3b0) [0x46ae0]
> /srv/program/coreutils/target/release/ls(std::sys::fs::unix::canonicalize+0x19) [0x1722a9]
> /srv/program/coreutils/target/release/ls(std::sys::fs::canonicalize+0x137) [0x19a507]
> /srv/program/coreutils/target/release/ls(uucore::mods::locale::create_bundle+0x231) [0x1fc331]
readlink("/srv/program/coreutils/target/release/ls", 0x7ffe06221310, 1023) = -1 EINVAL (Invalid argument)
> /usr/lib/x86_64-linux-gnu/libc.so.6(readlink+0xb) [0x11bb2b]
> /usr/lib/x86_64-linux-gnu/libc.so.6(realpath+0x3b0) [0x46ae0]
> /srv/program/coreutils/target/release/ls(std::sys::fs::unix::canonicalize+0x19) [0x1722a9]
> /srv/program/coreutils/target/release/ls(std::sys::fs::canonicalize+0x137) [0x19a507]
> /srv/program/coreutils/target/release/ls(uucore::mods::locale::create_bundle+0x231) [0x1fc331]
statx(AT_FDCWD, "/srv/program/coreutils/uucore/locales", AT_STATX_SYNC_AS_STAT, STATX_ALL, 0x7ffe062215b0) = -1 ENOENT (No such file or directory)
> /usr/lib/x86_64-linux-gnu/libc.so.6(statx+0xe) [0x11bf4e]
> /srv/program/coreutils/target/release/ls(std::sys::fs::unix::try_statx+0xb5) [0x18f025]
> /srv/program/coreutils/target/release/ls(std::sys::fs::metadata+0x159) [0x18ee89]
> /srv/program/coreutils/target/release/ls(uucore::mods::locale::create_bundle+0x4b1) [0x1fc5b1]
readlink("/proc/self/exe", "/srv/program/coreutils/target/re"..., 256) = 40
> /usr/lib/x86_64-linux-gnu/libc.so.6(readlink+0xb) [0x11bb2b]
> /srv/program/coreutils/target/release/ls(std::sys::fs::unix::readlink+0x5b) [0x19061b]
> /srv/program/coreutils/target/release/ls(std::env::current_exe+0xc9) [0x190389]
> /srv/program/coreutils/target/release/ls(uucore::mods::locale::get_locales_dir+0x24) [0x1fb904]
statx(AT_FDCWD, "/srv/program/coreutils/target/release/locales/ls", AT_STATX_SYNC_AS_STAT, STATX_ALL, 0x7ffe06221400) = -1 ENOENT (No such file or directory)
> /usr/lib/x86_64-linux-gnu/libc.so.6(statx+0xe) [0x11bf4e]
> /srv/program/coreutils/target/release/ls(std::sys::fs::unix::try_statx+0xb5) [0x18f025]
> /srv/program/coreutils/target/release/ls(std::sys::fs::metadata+0x159) [0x18ee89]
> /srv/program/coreutils/target/release/ls(uucore::mods::locale::get_locales_dir+0x215) [0x1fbaf5]
statx(AT_FDCWD, "/srv/program/coreutils/target/share/locales/ls", AT_STATX_SYNC_AS_STAT, STATX_ALL, 0x7ffe06221400) = -1 ENOENT (No such file or directory)
> /usr/lib/x86_64-linux-gnu/libc.so.6(statx+0xe) [0x11bf4e]
> /srv/program/coreutils/target/release/ls(std::sys::fs::unix::try_statx+0xb5) [0x18f025]
> /srv/program/coreutils/target/release/ls(std::sys::fs::metadata+0x159) [0x18ee89]
> /srv/program/coreutils/target/release/ls(uucore::mods::locale::get_locales_dir+0x453) [0x1fbd33]
statx(AT_FDCWD, "/srv/program/coreutils/target/release/ls", AT_STATX_SYNC_AS_STAT, STATX_ALL, {stx_mask=STATX_TYPE|STATX_MODE|STATX_NLINK|STATX_UID|STATX_GID|STATX_MTIME|STATX_CTIME|STATX_INO|STATX_SIZE|STATX_BLOCKS|STATX_BTIME|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFREG|0775, stx_size=2593792, ...}) = 0
> /usr/lib/x86_64-linux-gnu/libc.so.6(statx+0xe) [0x11bf4e]
> /srv/program/coreutils/target/release/ls(std::sys::fs::unix::try_statx+0xb5) [0x18f025]
> /srv/program/coreutils/target/release/ls(std::sys::fs::metadata+0x159) [0x18ee89]
> /srv/program/coreutils/target/release/ls(uucore::mods::locale::get_locales_dir+0x50a) [0x1fbdea]
readlink("/proc/self/exe", "/srv/program/coreutils/target/re"..., 256) = 40
> /usr/lib/x86_64-linux-gnu/libc.so.6(readlink+0xb) [0x11bb2b]
> /srv/program/coreutils/target/release/ls(std::sys::fs::unix::readlink+0x5b) [0x19061b]
> /srv/program/coreutils/target/release/ls(std::env::current_exe+0xc9) [0x190389]
> /srv/program/coreutils/target/release/ls(uucore::mods::locale::get_locales_dir+0x24) [0x1fb904]
statx(AT_FDCWD, "/home/rswinford/program/coreutils/target/release/ls", AT_STATX_SYNC_AS_STAT, STATX_ALL, {stx_mask=STATX_TYPE|STATX_MODE|STATX_NLINK|STATX_UID|STATX_GID|STATX_MTIME|STATX_CTIME|STATX_INO|STATX_SIZE|STATX_BLOCKS|STATX_BTIME|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFREG|0775, stx_size=2593792, ...}) = 0
> /usr/lib/x86_64-linux-gnu/libc.so.6(statx+0xe) [0x11bf4e]
> /srv/program/coreutils/target/release/ls(std::sys::fs::unix::try_statx+0xb5) [0x18f025]
> /srv/program/coreutils/target/release/ls(std::sys::fs::metadata+0x159) [0x18ee89]
> /srv/program/coreutils/target/release/ls(uucore::mods::locale::get_locales_dir+0x215) [0x1fbaf5]
readlink("/home", 0x7ffe0621fc30, 1023) = -1 EINVAL (Invalid argument)
> /usr/lib/x86_64-linux-gnu/libc.so.6(readlink+0xb) [0x11bb2b]
> /usr/lib/x86_64-linux-gnu/libc.so.6(realpath+0x3b0) [0x46ae0]
> /srv/program/coreutils/target/release/ls(std::sys::fs::unix::canonicalize+0x19) [0x1722a9]
> /srv/program/coreutils/target/release/ls(std::sys::fs::canonicalize+0x137) [0x19a507]
> /srv/program/coreutils/target/release/ls(uucore::mods::locale::create_bundle+0x231) [0x1fc331]
readlink("/home/rswinford", 0x7ffe0621fc30, 1023) = -1 EINVAL (Invalid argument)
> /usr/lib/x86_64-linux-gnu/libc.so.6(readlink+0xb) [0x11bb2b]
> /usr/lib/x86_64-linux-gnu/libc.so.6(realpath+0x3b0) [0x46ae0]
> /srv/program/coreutils/target/release/ls(std::sys::fs::unix::canonicalize+0x19) [0x1722a9]
> /srv/program/coreutils/target/release/ls(std::sys::fs::canonicalize+0x137) [0x19a507]
> /srv/program/coreutils/target/release/ls(uucore::mods::locale::create_bundle+0x231) [0x1fc331]
readlink("/home/rswinford/program", "/srv/program", 1023) = 12
> /usr/lib/x86_64-linux-gnu/libc.so.6(readlink+0xb) [0x11bb2b]
> /usr/lib/x86_64-linux-gnu/libc.so.6(realpath+0x3b0) [0x46ae0]
> /srv/program/coreutils/target/release/ls(std::sys::fs::unix::canonicalize+0x19) [0x1722a9]
> /srv/program/coreutils/target/release/ls(std::sys::fs::canonicalize+0x137) [0x19a507]
> /srv/program/coreutils/target/release/ls(uucore::mods::locale::create_bundle+0x231) [0x1fc331]
readlink("/srv", 0x7ffe0621fc30, 1023) = -1 EINVAL (Invalid argument)
> /usr/lib/x86_64-linux-gnu/libc.so.6(readlink+0xb) [0x11bb2b]
> /usr/lib/x86_64-linux-gnu/libc.so.6(realpath+0x3b0) [0x46ae0]
> /srv/program/coreutils/target/release/ls(std::sys::fs::unix::canonicalize+0x19) [0x1722a9]
> /srv/program/coreutils/target/release/ls(std::sys::fs::canonicalize+0x137) [0x19a507]
> /srv/program/coreutils/target/release/ls(uucore::mods::locale::create_bundle+0x231) [0x1fc331]
readlink("/srv/program", 0x7ffe0621fc30, 1023) = -1 EINVAL (Invalid argument)
> /usr/lib/x86_64-linux-gnu/libc.so.6(readlink+0xb) [0x11bb2b]
> /usr/lib/x86_64-linux-gnu/libc.so.6(realpath+0x3b0) [0x46ae0]
> /srv/program/coreutils/target/release/ls(std::sys::fs::unix::canonicalize+0x19) [0x1722a9]
> /srv/program/coreutils/target/release/ls(std::sys::fs::canonicalize+0x137) [0x19a507]
> /srv/program/coreutils/target/release/ls(uucore::mods::locale::create_bundle+0x231) [0x1fc331]
readlink("/srv/program/coreutils", 0x7ffe0621fc30, 1023) = -1 EINVAL (Invalid argument)
> /usr/lib/x86_64-linux-gnu/libc.so.6(readlink+0xb) [0x11bb2b]
> /usr/lib/x86_64-linux-gnu/libc.so.6(realpath+0x3b0) [0x46ae0]
> /srv/program/coreutils/target/release/ls(std::sys::fs::unix::canonicalize+0x19) [0x1722a9]
> /srv/program/coreutils/target/release/ls(std::sys::fs::canonicalize+0x137) [0x19a507]
> /srv/program/coreutils/target/release/ls(uucore::mods::locale::create_bundle+0x231) [0x1fc331]
readlink("/srv/program/coreutils/target", 0x7ffe0621fc30, 1023) = -1 EINVAL (Invalid argument)
> /usr/lib/x86_64-linux-gnu/libc.so.6(readlink+0xb) [0x11bb2b]
> /usr/lib/x86_64-linux-gnu/libc.so.6(realpath+0x3b0) [0x46ae0]
> /srv/program/coreutils/target/release/ls(std::sys::fs::unix::canonicalize+0x19) [0x1722a9]
> /srv/program/coreutils/target/release/ls(std::sys::fs::canonicalize+0x137) [0x19a507]
> /srv/program/coreutils/target/release/ls(uucore::mods::locale::create_bundle+0x231) [0x1fc331]
readlink("/srv/program/coreutils/target/release", 0x7ffe0621fc30, 1023) = -1 EINVAL (Invalid argument)
> /usr/lib/x86_64-linux-gnu/libc.so.6(readlink+0xb) [0x11bb2b]
> /usr/lib/x86_64-linux-gnu/libc.so.6(realpath+0x3b0) [0x46ae0]
> /srv/program/coreutils/target/release/ls(std::sys::fs::unix::canonicalize+0x19) [0x1722a9]
> /srv/program/coreutils/target/release/ls(std::sys::fs::canonicalize+0x137) [0x19a507]
> /srv/program/coreutils/target/release/ls(uucore::mods::locale::create_bundle+0x231) [0x1fc331]
readlink("/srv/program/coreutils/target/release/ls", 0x7ffe0621fc30, 1023) = -1 EINVAL (Invalid argument)
> /usr/lib/x86_64-linux-gnu/libc.so.6(readlink+0xb) [0x11bb2b]
> /usr/lib/x86_64-linux-gnu/libc.so.6(realpath+0x3b0) [0x46ae0]
> /srv/program/coreutils/target/release/ls(std::sys::fs::unix::canonicalize+0x19) [0x1722a9]
> /srv/program/coreutils/target/release/ls(std::sys::fs::canonicalize+0x137) [0x19a507]
> /srv/program/coreutils/target/release/ls(uucore::mods::locale::create_bundle+0x231) [0x1fc331]
statx(AT_FDCWD, "/srv/program/coreutils/uucore/locales", AT_STATX_SYNC_AS_STAT, STATX_ALL, 0x7ffe0621fed0) = -1 ENOENT (No such file or directory)
> /usr/lib/x86_64-linux-gnu/libc.so.6(statx+0xe) [0x11bf4e]
> /srv/program/coreutils/target/release/ls(std::sys::fs::unix::try_statx+0xb5) [0x18f025]
> /srv/program/coreutils/target/release/ls(std::sys::fs::metadata+0x159) [0x18ee89]
> /srv/program/coreutils/target/release/ls(uucore::mods::locale::create_bundle+0x4b1) [0x1fc5b1]
readlink("/proc/self/exe", "/srv/program/coreutils/target/re"..., 256) = 40
> /usr/lib/x86_64-linux-gnu/libc.so.6(readlink+0xb) [0x11bb2b]
> /srv/program/coreutils/target/release/ls(std::sys::fs::unix::readlink+0x5b) [0x19061b]
> /srv/program/coreutils/target/release/ls(std::env::current_exe+0xc9) [0x190389]
> /srv/program/coreutils/target/release/ls(uucore::mods::locale::get_locales_dir+0x24) [0x1fb904]
statx(AT_FDCWD, "/home/rswinford/program/coreutils/target/release/ls", AT_STATX_SYNC_AS_STAT, STATX_ALL, {stx_mask=STATX_TYPE|STATX_MODE|STATX_NLINK|STATX_UID|STATX_GID|STATX_MTIME|STATX_CTIME|STATX_INO|STATX_SIZE|STATX_BLOCKS|STATX_BTIME|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFREG|0775, stx_size=2593792, ...}) = 0
> /usr/lib/x86_64-linux-gnu/libc.so.6(statx+0xe) [0x11bf4e]
> /srv/program/coreutils/target/release/ls(std::sys::fs::unix::try_statx+0xb5) [0x18f025]
> /srv/program/coreutils/target/release/ls(std::sys::fs::metadata+0x159) [0x18ee89]
> /srv/program/coreutils/target/release/ls(uucore::mods::locale::get_locales_dir+0x215) [0x1fbaf5]
statx(AT_FDCWD, ".", AT_STATX_SYNC_AS_STAT, STATX_ALL, {stx_mask=STATX_TYPE|STATX_MODE|STATX_NLINK|STATX_UID|STATX_GID|STATX_MTIME|STATX_CTIME|STATX_INO|STATX_SIZE|STATX_BLOCKS|STATX_BTIME|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFDIR|0775, stx_size=42, ...}) = 0
> /usr/lib/x86_64-linux-gnu/libc.so.6(statx+0xe) [0x11bf4e]
> /srv/program/coreutils/target/release/ls(std::sys::fs::unix::try_statx+0xb5) [0x18f025]
> /srv/program/coreutils/target/release/ls(std::sys::fs::metadata+0x159) [0x18ee89]
> /srv/program/coreutils/target/release/ls(uu_ls::PathData::new+0x97) [0x1b2bc7]
> unexpected_backtracing_error [0x61ce8b6d44a0]
statx(AT_FDCWD, ".", AT_STATX_SYNC_AS_STAT, STATX_ALL, {stx_mask=STATX_TYPE|STATX_MODE|STATX_NLINK|STATX_UID|STATX_GID|STATX_MTIME|STATX_CTIME|STATX_INO|STATX_SIZE|STATX_BLOCKS|STATX_BTIME|STATX_MNT_ID, stx_attributes=0, stx_mode=S_IFDIR|0775, stx_size=42, ...}) = 0
> /usr/lib/x86_64-linux-gnu/libc.so.6(statx+0xe) [0x11bf4e]
> /srv/program/coreutils/target/release/ls(std::sys::fs::unix::try_statx+0xb5) [0x18f025]
> /srv/program/coreutils/target/release/ls(std::sys::fs::metadata+0x159) [0x18ee89]
> /srv/program/coreutils/target/release/ls(core::cell::once::OnceCell<T>::try_init+0x32) [0x1e7d02]
It would seem only two(?) out of 25 of these calls readlink and statx calls are related to the actual invocation of ls whereas the rest are about locales support (which AFAIK doesn't currently work?).
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the uucore::mods::locale::get_locales_dir and create_bundle entry points shown in the strace output, then compare basic ls invocations with GNU ls using strace. Identify which locale-support path causes the extra statx and readlink calls, and verify that the excess is reduced without changing ls behavior.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- cli, performance
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 38/100