(address . bug-guix@gnu.org)
Native builds of coreutils-8.32 (ca. commit
3734857fc55df2c599c2fe5cc4ae49f5d47879fc) have one test failure on
i586-gnu:
Toggle snippet (44 lines)
+ skip_if_root_
+ uid_is_privileged_
++ id -u
+ my_uid=999
+ case $my_uid in
+ return 1
+ touch unreadable
+ chmod a-r unreadable
+ df unreadable
df: Warning: cannot read table of mounted file systems: No such file or directory
Filesystem 1K-blocks Used Available Use% Mounted on
- 12288000 2916208 8757392 25% /
+ mkfifo_or_skip_ fifo
+ test 1 = 1
+ mkfifo fifo
+ timeout 10 df fifo
df: Warning: cannot read table of mounted file systems: No such file or directory
+ fail=1
+ test 1 = 1
+ dump_mount_list_
+ cat /proc/self/mountinfo
cat: /proc/self/mountinfo: No such file or directory
+ cat /proc/self/mounts
cat: /proc/self/mounts: No such file or directory
+ cat /proc/mounts
/dev/hd0s1 / ext2fs writable,store-type=typed 0 0
proc /proc /hurd/procfs defaults 0 0
none /dev/shm /hurd/tmpfs writable,no-sync,size=1514772K 0 0
+ Exit 1
+ set +e
+ exit 1
+ exit 1
+ remove_tmp_
+ __st=1
+ cleanup_
+ :
+ test '' = yes
+ cd /tmp/guix-build-coreutils-8.32.drv-0/coreutils-8.32
+ chmod -R u+rwx /tmp/guix-build-coreutils-8.32.drv-0/coreutils-8.32/gt-unreadable.sh.6E92
+ rm -rf /tmp/guix-build-coreutils-8.32.drv-0/coreutils-8.32/gt-unreadable.sh.6E92
+ exit 1
FAIL tests/df/unreadable.sh (exit status: 1)
Indeed, ‘df’ seems to read FIFOs as if they were regular files:
Toggle snippet (8 lines)
ludo@childhurd ~$ mkfifo fifo
ludo@childhurd ~$ ls -l fifo
prw-r--r-- 1 ludo users 0 Oct 21 07:08 fifo
ludo@childhurd ~$ df ./fifo
df: Warning: cannot read table of mounted file systems: No such file or directory
^C
It would seem that it’s stuck on a ‘dir_lookup’ RPC:
Toggle snippet (17 lines)
135<--132(pid83)->io_identity_request () = 0 137<--136(pid83) 131<--133(pid83) 29419
task109(pid83)-> 3206 (pn{ 18}) = 0
task109(pid83)-> 3206 (pn{ 19}) = 0
task109(pid83)-> 3206 (pn{ 17}) = 0
task109(pid83)-> 3206 (pn{ 19}) = 0
task109(pid83)-> 3206 (pn{ 17}) = 0
task109(pid83)-> 3206 (pn{ 16}) = 0
task109(pid83)-> 3206 (pn{ 14}) = 0
task109(pid83)-> 3206 (pn{ 17}) = 0
task109(pid83)-> 3206 (pn{ 14}) = 0
task109(pid83)-> 2023 (17022976 4096) = 0
86<--120(pid83)->dir_lookup ("home/ludo/fifo" 65 0) ...113
task109(pid83)-> 2021 (0 4096 1) = 0 17018880
task109(pid83)-> 3208 (pn{ 13} 0 1) = 0
task109(pid83)-> 3206 (pn{ 13}) = 0
… where 65 = O_NOTRANS | O_RDONLY.
Passing O_NOTRANS (without O_RDONLY) like the ‘stat’ command does works
fine.
Maybe /hurd/fifo needs to implement ‘trivfs_check_open_hook’ to avoid
actually opening?
Ludo’.