Skip to content

Commit 5266eb8

Browse files
Auto merge of #144210 - Gelbpunkt:thread-stack-size-musl, r=<try>
std: thread: Return error if setting thread stack size fails try-job: x86_64-gnu-aux
2 parents a153133 + 25fe461 commit 5266eb8

File tree

1 file changed

+9
-1
lines changed

1 file changed

+9
-1
lines changed

library/std/src/sys/pal/unix/thread.rs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,15 @@ impl Thread {
7777
let page_size = os::page_size();
7878
let stack_size =
7979
(stack_size + page_size - 1) & (-(page_size as isize - 1) as usize - 1);
80-
assert_eq!(libc::pthread_attr_setstacksize(attr.as_mut_ptr(), stack_size), 0);
80+
81+
// Some libc implementations, e.g. musl, place an upper bound
82+
// on the stack size, in which case we can only gracefully return
83+
// an error here.
84+
if libc::pthread_attr_setstacksize(attr.as_mut_ptr(), stack_size) != 0 {
85+
assert_eq!(libc::pthread_attr_destroy(attr.as_mut_ptr()), 0);
86+
drop(Box::from_raw(data));
87+
return Err(io::Error::other("invalid stack size"));
88+
}
8189
}
8290
};
8391
}

0 commit comments

Comments
 (0)