From 8ba4c90bc406d4ac32928c0d905b8073575359b6 Mon Sep 17 00:00:00 2001 From: Anton-4 <17049058+Anton-4@users.noreply.github.com> Date: Sat, 16 Aug 2025 20:10:04 +0200 Subject: [PATCH] Fix stack overflows Tokio uses a smaller stack size for threads, I made it use the default stack size for a program instead. Fixes https://github.com/roc-lang/unicode/issues/28 --- crates/language_server/src/server.rs | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/crates/language_server/src/server.rs b/crates/language_server/src/server.rs index 7be367b265..f99eebfea2 100644 --- a/crates/language_server/src/server.rs +++ b/crates/language_server/src/server.rs @@ -371,10 +371,25 @@ where } } -#[tokio::main] -async fn main() { +fn main() { env_logger::Builder::from_env("ROCLS_LOG").init(); + // Tokio uses a smaller stack size for threads by default, + // this can lead to stack overflows that don't show up with the roc release bin! + let stack_size = 8 * 1024 * 1024; // 8MB + + // Build a custom Tokio runtime with configured thread stack size + let runtime = tokio::runtime::Builder::new_multi_thread() + .thread_stack_size(stack_size) + .enable_all() + .build() + .expect("Failed to create Tokio runtime"); + + // Run the async main function on our custom runtime + runtime.block_on(async_main()); +} + +async fn async_main() { let stdin = tokio::io::stdin(); let stdout = tokio::io::stdout();