diff options
| author | The 8472 <git@infinite-source.de> | 2023-09-18 21:51:34 +0200 |
|---|---|---|
| committer | The 8472 <git@infinite-source.de> | 2023-09-18 21:51:34 +0200 |
| commit | a6d87246f6d1cee63d773311536ace19d1df78a3 (patch) | |
| tree | 6bb4aa07f7d4eeb9c9bb5bc799ae9d5eece38971 | |
| parent | b1575cb72ef40459666f802af8636faf8428e3eb (diff) | |
| download | rust-a6d87246f6d1cee63d773311536ace19d1df78a3.tar.gz rust-a6d87246f6d1cee63d773311536ace19d1df78a3.zip | |
panic when encountering an illegal cpumask
| -rw-r--r-- | library/std/src/sys/unix/thread.rs | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/library/std/src/sys/unix/thread.rs b/library/std/src/sys/unix/thread.rs index 7c242d4d334..2afec897a88 100644 --- a/library/std/src/sys/unix/thread.rs +++ b/library/std/src/sys/unix/thread.rs @@ -324,8 +324,10 @@ pub fn available_parallelism() -> io::Result<NonZeroUsize> { if libc::sched_getaffinity(0, mem::size_of::<libc::cpu_set_t>(), &mut set) == 0 { let count = libc::CPU_COUNT(&set) as usize; let count = count.min(quota); - // SAFETY: affinity mask can't be empty and the quota gets clamped to a minimum of 1 - return Ok(NonZeroUsize::new_unchecked(count)); + // reported to occur on MIPS kernels older than our minimum supported kernel version for those targets + let count = NonZeroUsize::new(count) + .expect("CPU count must be > 0. This may be a bug in sched_getaffinity(); try upgrading the kernel."); + return Ok(count); } } } |
