-
-
Notifications
You must be signed in to change notification settings - Fork 3k
Description
On Linux, e.g. in os.zig
the std lib will often interrogate errno
and map to Zig errors, or unreachable
if the std lib wants to assert that the std lib implementation would never cause an EINVAL
or EFAULT
, e.g.:
EINVAL => unreachable,
EFAULT => unreachable,
However, while implementing #6356, I was about to follow this pattern but then I realized that the kernel often overloads errors in new kernel versions, which is particularly the case for the io_uring
syscalls.
This means that we might think our std lib implementation cannot cause EINVAL
, and then the kernel adds a new feature which could, leading to undefined behavior instead of a safe error.
In other words, we need to start going through the std lib and make this usage of unreachable
an anti-pattern because there's no way we can assert what the kernel can or cannot be returning like this.