llnl / llnl/UnifyFS

pread() tests fail with GCC 12 and 13

Open
#824 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
C
Stars
122
Forks
34
PR merge metrics
No merged PRs in 30d

Description

When updated our Github Actions CI, I added GCC 12 and 13 (both using Ubuntu 24.04) and the `pread()` tests started failing, while still passing for GCC 9, 10, and 11.

The tests are here:
https://github.com/LLNL/UnifyFS/blob/c44d052df5d838721171ea0208534ad5d084798f/t/sys/write-read.c#L322-L338

Below are the results.

### GCC 12

Build: https://github.com/CamStan/UnifyFS/actions/runs/17742379589/job/50419335701

```
FAIL: 0100-sysio-gotcha.t 174 - sys/write-read.c:336 pread(fd=65536, sz=1024) rc=-1: Bad file descriptor
FAIL: 0100-sysio-gotcha.t 175 - sys/write-read.c:336 pread(fd=65536, sz=2048) rc=-1: Bad file descriptor
FAIL: 0100-sysio-gotcha.t 176 - sys/write-read.c:336 pread(fd=65536, sz=4096) rc=-1: Bad file descriptor
FAIL: 0100-sysio-gotcha.t 177 - sys/write-read.c:336 pread(fd=65536, sz=8192) rc=-1: Bad file descriptor
FAIL: 0100-sysio-gotcha.t 178 - sys/write-read.c:336 pread(fd=65536, sz=16384) rc=-1: Bad file descriptor
FAIL: 0100-sysio-gotcha.t 179 - sys/write-read.c:336 pread(fd=65536, sz=32768) rc=-1: Bad file descriptor
FAIL: 0100-sysio-gotcha.t 180 - sys/write-read.c:336 pread(fd=65536, sz=65536) rc=-1: Bad file descriptor
FAIL: 0100-sysio-gotcha.t 181 - sys/write-read.c:336 pread(fd=65536, sz=131072) rc=-1: Bad file descriptor
FAIL: 0100-sysio-gotcha.t 182 - sys/write-read.c:336 pread(fd=65536, sz=262144) rc=-1: Bad file descriptor
FAIL: 0100-sysio-gotcha.t 183 - sys/write-read.c:336 pread(fd=65536, sz=524288) rc=-1: Bad file descriptor
FAIL: 0100-sysio-gotcha.t 184 - sys/write-read.c:336 pread(fd=65536, sz=1048576) rc=-1: Bad file descriptor
FAIL: 0100-sysio-gotcha.t 185 - sys/write-read.c:336 pread(fd=65536, sz=2097152) rc=-1: Bad file descriptor
FAIL: 0100-sysio-gotcha.t 186 - sys/write-read.c:336 pread(fd=65536, sz=4194304) rc=-1: Bad file descriptor
FAIL: 0100-sysio-gotcha.t 187 - sys/write-read.c:336 pread(fd=65536, sz=8388608) rc=-1: Bad file descriptor
FAIL: 0100-sysio-gotcha.t 188 - sys/write-read.c:336 pread(fd=65536, sz=16777216) rc=-1: Bad file descriptor
FAIL: 0100-sysio-gotcha.t 189 - sys/write-read.c:336 pread(fd=65536, sz=33554432) rc=-1: Bad file descriptor
FAIL: 0100-sysio-gotcha.t 190 - sys/write-read.c:336 pread(fd=65536, sz=67108864) rc=-1: Bad file descriptor

...

not ok 174 - sys/write-read.c:336 pread(fd=65536, sz=1024) rc=-1: Bad file descriptor
FAIL: 0100-sysio-gotcha.t 174 - sys/write-read.c:336 pread(fd=65536, sz=1024) rc=-1: Bad file descriptor
# Failed test 'sys/write-read.c:336 pread(fd=65536, sz=1024) rc=-1: Bad file descriptor'
# at sys/write-read.c line 334.
...
```

### GCC 11
```
PASS: 0100-sysio-gotcha.t 174 - sys/write-read.c:336 pread(fd=65536, sz=1024) rc=1024: Success
PASS: 0100-sysio-gotcha.t 175 - sys/write-read.c:336 pread(fd=65536, sz=2048) rc=2048: Success
PASS: 0100-sysio-gotcha.t 176 - sys/write-read.c:336 pread(fd=65536, sz=4096) rc=4096: Success
PASS: 0100-sysio-gotcha.t 177 - sys/write-read.c:336 pread(fd=65536, sz=8192) rc=8192: Success
PASS: 0100-sysio-gotcha.t 178 - sys/write-read.c:336 pread(fd=65536, sz=16384) rc=16384: Success
PASS: 0100-sysio-gotcha.t 179 - sys/write-read.c:336 pread(fd=65536, sz=32768) rc=32768: Success
PASS: 0100-sysio-gotcha.t 180 - sys/write-read.c:336 pread(fd=65536, sz=65536) rc=65536: Success
PASS: 0100-sysio-gotcha.t 181 - sys/write-read.c:336 pread(fd=65536, sz=131072) rc=131072: Success
PASS: 0100-sysio-gotcha.t 182 - sys/write-read.c:336 pread(fd=65536, sz=262144) rc=262144: Success
PASS: 0100-sysio-gotcha.t 183 - sys/write-read.c:336 pread(fd=65536, sz=524288) rc=524288: Success
PASS: 0100-sysio-gotcha.t 184 - sys/write-read.c:336 pread(fd=65536, sz=1048576) rc=1048576: Success
PASS: 0100-sysio-gotcha.t 185 - sys/write-read.c:336 pread(fd=65536, sz=2097152) rc=2097152: Success
PASS: 0100-sysio-gotcha.t 186 - sys/write-read.c:336 pread(fd=65536, sz=4194304) rc=4194304: Success
PASS: 0100-sysio-gotcha.t 187 - sys/write-read.c:336 pread(fd=65536, sz=8388608) rc=8388608: Success
PASS: 0100-sysio-gotcha.t 188 - sys/write-read.c:336 pread(fd=65536, sz=16777216) rc=16777216: Success
PASS: 0100-sysio-gotcha.t 189 - sys/write-read.c:336 pread(fd=65536, sz=33554432) rc=33554432: Success
PASS: 0100-sysio-gotcha.t 190 - sys/write-read.c:336 pread(fd=65536, sz=67108864) rc=67108864: Success

...

2025-09-15T16:55:49 tid=61715 @ invoke_client_mread_rpc() [margo_client.c:875] Got response ret=0
2025-09-15T16:55:49 tid=61715 @ process_gfid_reads() [client_read.c:791] waiting for completion of mread[5]
2025-09-15T16:55:49 tid=61732 @ unifyfs_mread_req_data_rpc() [margo_client.c:1114] updated coverage for mread[5] request 0
2025-09-15T16:55:49 tid=61732 @ unifyfs_mread_req_data_rpc() [margo_client.c:1130] responding
2025-09-15T16:55:49 tid=61732 @ client_update_mread_request() [client_read.c:183] updating mread[5] status for request 0 of 1 (n_complete=1, n_error=0)
2025-09-15T16:55:49 tid=61732 @ client_update_mread_request() [client_read.c:198] mread[5] completed 1 requests
2025-09-15T16:55:49 tid=61732 @ unifyfs_mread_req_complete_rpc() [margo_client.c:1182] responding
2025-09-15T16:55:49 tid=61715 @ process_gfid_reads() [client_read.c:821] mread[5] wait completed - 1 requests, 0 errors
2025-09-15T16:55:49 tid=61715 @ process_gfid_reads() [client_read.c:830] mread[5] server request 0:
2025-09-15T16:55:49 tid=61715 @ debug_print_read_req() [client_read.c:21] read_req[0x7ffccc374670] gfid=1510631908, file offset=0, length=2048, buf=0x7f1263fff010 - nread=2048, errcode=115 (Operation now in progress), byte coverage=[0,2047]
2025-09-15T16:55:49 tid=61715 @ unifyfs_intercept_fd() [posix_client.c:301] Changing fd from exposed 65536 to internal 0
2025-09-15T16:55:49 tid=61715 @ __wrap_pread() [unifyfs-sysio.c:2062] pread - fd=0 offset=0 count=4096
2025-09-15T16:55:49 tid=61715 @ process_gfid_reads() [client_read.c:771] mread[6]: n_reqs=1, reqs(0x7ffccc374670)
2025-09-15T16:55:49 tid=61715 @ invoke_client_mread_rpc() [margo_client.c:861] invoking the mread rpc function in client
ok 174 - sys/write-read.c:336 pread(fd=65536, sz=1024) rc=1024: Success
PASS: 0100-sysio-gotcha.t 174 - sys/write-read.c:336 pread(fd=65536, sz=1024) rc=1024: Success
...
```

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with t/sys/write-read.c lines 322-338 and compare the pread() behavior under GCC 11 versus GCC 12 and 13 in the linked GitHub Actions jobs. Reproduce the 0100-sysio-gotcha.t failures and trace why the newer builds return EBADF. Done means the affected pread() tests pass with GCC 12 and 13 without regressing GCC 9-11.

Written by the indexing model from the issue text.

Assessment

Tech stack
c, github-actions
Domain
ci-cd, testing-qa
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.