From 0b6658cb84588f3523b1de7377969af8f34553f6 Mon Sep 17 00:00:00 2001 From: Chip Reed Date: Thu, 22 Aug 2024 09:26:09 +0200 Subject: [PATCH] generate `Context` inside a thread fix #9882 this is a workaround for #9882 due to windows having a small stack size for the main thread (1MiB) versus other platforms which have 8MiB. the true fix would be to lower the generated code stack size, but with lots a plugins, there are lots of ACL configurations. --- core/tauri-codegen/src/context.rs | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/core/tauri-codegen/src/context.rs b/core/tauri-codegen/src/context.rs index fd06092f301d..ecbbc136023b 100644 --- a/core/tauri-codegen/src/context.rs +++ b/core/tauri-codegen/src/context.rs @@ -489,7 +489,7 @@ pub fn context_codegen(data: ContextData) -> EmbeddedAssetsResult { quote!() }; - Ok(quote!({ + let context = quote!({ #[allow(unused_mut, clippy::let_and_return)] let mut context = #root::Context::new( #config, @@ -507,6 +507,22 @@ pub fn context_codegen(data: ContextData) -> EmbeddedAssetsResult { #maybe_config_parent_setter context + }); + + Ok(quote!({ + let thread = ::std::thread::Builder::new() + .name(String::from("generated tauri context creation")) + .stack_size(8 * 1024 * 1024) + .spawn(|| #context) + .expect("unable to create thread with 8MiB stack"); + + match thread.join() { + Ok(context) => context, + Err(_) => { + eprintln!("the generated Tauri `Context` panicked during creation"); + ::std::process::exit(101); + } + } })) }