Increase Tokio worker stack to avoid detached review overflow

This commit is contained in:
Charles Cunningham
2026-02-18 19:29:23 -08:00
parent 16c3c47535
commit ca6aeaef01

View File

@@ -13,7 +13,9 @@ const APPLY_PATCH_ARG0: &str = "apply_patch";
const MISSPELLED_APPLY_PATCH_ARG0: &str = "applypatch";
const LOCK_FILENAME: &str = ".lock";
#[cfg(target_os = "windows")]
const WINDOWS_TOKIO_WORKER_STACK_SIZE_BYTES: usize = 16 * 1024 * 1024;
const TOKIO_WORKER_STACK_SIZE_BYTES: usize = 16 * 1024 * 1024;
#[cfg(not(target_os = "windows"))]
const TOKIO_WORKER_STACK_SIZE_BYTES: usize = 4 * 1024 * 1024;
/// Keeps the per-session PATH entry alive and locked for the process lifetime.
pub struct Arg0PathEntryGuard {
@@ -129,12 +131,10 @@ where
fn build_runtime() -> anyhow::Result<tokio::runtime::Runtime> {
let mut builder = tokio::runtime::Builder::new_multi_thread();
builder.enable_all();
#[cfg(target_os = "windows")]
{
// Defensive hardening: Windows worker threads have lower effective
// stack headroom, so use a larger stack for runtime workers.
builder.thread_stack_size(WINDOWS_TOKIO_WORKER_STACK_SIZE_BYTES);
}
// Bazel/Linux workers commonly run with the default Tokio worker stack (2 MiB),
// which can overflow in deeper app-server startup paths (for example, detached review thread init).
// Pin a larger worker stack across platforms (Windows keeps the larger 16 MiB value).
builder.thread_stack_size(TOKIO_WORKER_STACK_SIZE_BYTES);
Ok(builder.build()?)
}