Skip to content

pread() tests fail with GCC 12 and 13 #824

@CamStan

Description

@CamStan

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:

UnifyFS/t/sys/write-read.c

Lines 322 to 338 in c44d052

/* Read data from file, starting at size 1 KiB, up to full file size */
errno = 0;
buf = malloc(global);
err = errno;
ok(NULL != buf,
"%s:%d malloc(%zu) read buffer succeeds (errno=%d): %s",
__FILE__, __LINE__, global, err, strerror(err));
if (NULL != buf) {
for (size_t sz = 1024; sz <= global; sz *= 2) {
errno = 0;
szrc = pread(fd, buf, sz, 0);
err = errno;
ok(szrc == sz && err == 0,
"%s:%d pread(fd=%d, sz=%zu) rc=%zd: %s",
__FILE__, __LINE__, fd, sz, szrc, strerror(err));
}
free(buf);

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
...

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