On 2023-02-15 3:37 p.m., Jens Axboe wrote:
System crashes running test buf-ring.t.
Huh, what's the crash?
Not much info. System log indicates an HPMC occurred. Unfortunately, recovery code doesn't work.
Running test buf-ring.t bad run 0/0 = -233
THis one, and the similar -223 ones, you need to try and dig into that.
It doesn't reproduce for me, and it very much seems like the test case
having a different view of what -ENOBUFS looks like and hence it fails
when the kernel passes down something that is -ENOBUFS internally, but
doesn't match the app -ENOBUFS value. Are you running a 64-bit kernel?
Would that cause any differences?
I'm running a 64-bit kernel (6.1.12).
I believe 32 and 64-bit kernels have same error codes.
I see three places in io_uring where -ENOBUFS is returned. They have similar code:
retry_multishot:
if (io_do_buffer_select(req)) {
void __user *buf;
size_t len = sr->len;
buf = io_buffer_select(req, &len, issue_flags);
if (!buf)
return -ENOBUFS;
I don't see this on qemu with the 32-bit kernel, nor does it happen on
other platforms.
--
John David Anglin dave.anglin@xxxxxxxx