Open
Description
I tried this code:
#[tokio::main]
async fn main() {
test_buf().await;
test_buf().await;
test_buf().await;
// ... Execute n times, do not use for loop
}
async fn test_buf(){
let buf = [0;65536];
test_buf0(&buf).await;
}
async fn test_buf0(_buf:&[u8]){}
I expected to see this code can work
Instead, this happened:
fatal runtime error: stack overflow
rustc --version --verbose
:
rustc 1.82.0 (f6e511eec 2024-10-15)
binary: rustc
commit-hash: f6e511eec7342f59a25f7c0534f1dbea00d01b14
commit-date: 2024-10-15
host: x86_64-apple-darwin
release: 1.82.0
LLVM version: 19.1.1
This issue can also be directly reproduced on playground, since the stack size on Linux is larger than that on Windows, the n
times that can reproduce the issue is greater than that on Windows
Exited with signal 6 (SIGABRT): abort program
Standard Error
Compiling playground v0.0.1 (/playground)
Finished `dev` profile [unoptimized + debuginfo] target(s) in 1.38s
Running `target/debug/playground`
thread 'main' has overflowed its stack
fatal runtime error: stack overflow
The tokio side think this should be a bug of the compiler, tokio-rs/tokio#5909