| author | |
| committer | |
| log | 490a411fd4e00fee65bc014fa7b1af59042d269b |
| tree | c825687c6b277e64ee844fa5944e8751abed5b56 |
| parent | ccf670c2b04ebeb9db43eb9f5c47c6cf03e4b1d0 |
OpenBSD 7.3 changed its implementation of
pthread_get_name_np/pthread_set_name_np to wrap new libc functions
getthrname/setthrname and lowered the max buffer size from 32 to 24.
This is not a backwards-compatible change because if we were to put in
comptime version logic to use size 32 when target < 7.3 the binaries
would be undefined when running on >= 7.3. It also could simply be that
OpenBSD has a policy to not support older binaries running on newer
releases? Regardless, the safest course is to simply use the smallest
known buffer size.
As an aside, this bug manifested as a "hung" std.Thread test because 7.3
pthread API never checks for error result when wrapping getthrname/setthrname.
This is not a problem in std.Thread when we use the correct max buffer
size because ERANGE/EINVAL become unreachable.1 files changed, 1 insertions(+), 1 deletions(-)
lib/std/Thread.zig+1-1| ... | @@ -40,7 +40,7 @@ pub const max_name_len = switch (target.os.tag) { | ... | @@ -40,7 +40,7 @@ pub const max_name_len = switch (target.os.tag) { |
| 40 | .macos, .ios, .watchos, .tvos => 63, | 40 | .macos, .ios, .watchos, .tvos => 63, |
| 41 | .netbsd => 31, | 41 | .netbsd => 31, |
| 42 | .freebsd => 15, | 42 | .freebsd => 15, |
| 43 | .openbsd => 31, | 43 | .openbsd => 23, |
| 44 | .dragonfly => 1023, | 44 | .dragonfly => 1023, |
| 45 | .solaris => 31, | 45 | .solaris => 31, |
| 46 | else => 0, | 46 | else => 0, |