Skip to content

Fuse filesystem returns EIO on close #135

@AustinSchuh

Description

@AustinSchuh

I've got a unit test (https://github.com/frc971/971-Robot-Code/blob/master/aos/starter/subprocess_reliable_test.cc in SubprocessTest.CanSlowlyStopGracefully) which works locally, but fails on buildbarn with the runner setup to use fuse on Linux (Debian Bookworm). When run under strace, it reports that close() fails when it never fails when run under linux_sandbox.

openat(AT_FDCWD, "/worker/build/120646/root/_tmp/4464e3f0fe79ed08c06736b5dcca7332/aos/aos/aos.timing.Report.v6", O_RDWR|O_CREAT|O_EXCL, 0770) = -1 EEXIST (File exists)
gettid()                                = 3700
write(2, "I20240507 06:59:55.336262  3700 "..., 170I20240507 06:59:55.336262  3700 memory_mapped_queue.cc:101] /worker/build/120646/root/_tmp/4464e3f0fe79ed08c06736b5dcca7332/aos/aos/aos.timing.Report.v6 already created.
) = 170
openat(AT_FDCWD, "/worker/build/120646/root/_tmp/4464e3f0fe79ed08c06736b5dcca7332/aos/aos/aos.timing.Report.v6", O_RDWR) = 16
newfstatat(16, "", {st_mode=S_IFREG|0777, st_size=627680, ...}, AT_EMPTY_PATH) = 0
mmap(NULL, 627680, PROT_READ|PROT_WRITE, MAP_SHARED, 16, 0) = 0x7fb132985000
mmap(NULL, 627680, PROT_READ, MAP_SHARED, 16, 0) = 0x7fb1328eb000
close(16)                               = -1 EIO (Input/output error)

Adding the write (LOG(INFO)) reduces the probability of failure.

I'll keep debugging, but any advice on where to start looking would be wonderful. I can work on creating a smaller reproducer if that would be helpful.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions