-
Notifications
You must be signed in to change notification settings - Fork 14k
Open
Labels
A-async-awaitArea: Async & AwaitArea: Async & AwaitC-bugCategory: This is a bug.Category: This is a bug.T-compilerRelevant to the compiler team, which will review and decide on the PR/issue.Relevant to the compiler team, which will review and decide on the PR/issue.
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
Metadata
Metadata
Assignees
Labels
A-async-awaitArea: Async & AwaitArea: Async & AwaitC-bugCategory: This is a bug.Category: This is a bug.T-compilerRelevant to the compiler team, which will review and decide on the PR/issue.Relevant to the compiler team, which will review and decide on the PR/issue.