Decrease default wasm stack to 512k from 1M (#3861)
This commit aims to achieve the goal of being able to run the test suite on Windows with `--test-threads 1`, or more notably allowing Wasmtime's defaults to work better with the main thread on Windows which appears to have a smaller stack by default than Linux by comparison. In decreasing the default wasm stack size a test is also update to probe for less stack to work on Windows' main thread by default, ideally allowing the full test suite to work with `--test-threads 1` (although this isn't added to CI as it's not really critical). Closes #3857
This commit is contained in:
@@ -115,7 +115,15 @@ impl Config {
|
||||
profiler: Arc::new(NullProfilerAgent),
|
||||
mem_creator: None,
|
||||
allocation_strategy: InstanceAllocationStrategy::OnDemand,
|
||||
max_wasm_stack: 1 << 20,
|
||||
// 512k of stack -- note that this is chosen currently to not be too
|
||||
// big, not be too small, and be a good default for most platforms.
|
||||
// One platform of particular note is Windows where the stack size
|
||||
// of the main thread seems to, by default, be smaller than that of
|
||||
// Linux and macOS. This 512k value at least lets our current test
|
||||
// suite pass on the main thread of Windows (using `--test-threads
|
||||
// 1` forces this), or at least it passed when this change was
|
||||
// committed.
|
||||
max_wasm_stack: 512 * 1024,
|
||||
wasm_backtrace_details_env_used: false,
|
||||
features: WasmFeatures::default(),
|
||||
#[cfg(feature = "async")]
|
||||
@@ -444,7 +452,7 @@ impl Config {
|
||||
/// on stack overflow, a host function that overflows the stack will
|
||||
/// abort the process.
|
||||
///
|
||||
/// By default this option is 1 MiB.
|
||||
/// By default this option is 512 KiB.
|
||||
pub fn max_wasm_stack(&mut self, size: usize) -> Result<&mut Self> {
|
||||
#[cfg(feature = "async")]
|
||||
if size > self.async_stack_size {
|
||||
|
||||
@@ -4,8 +4,8 @@ use wasmtime::*;
|
||||
#[test]
|
||||
fn host_always_has_some_stack() -> anyhow::Result<()> {
|
||||
static HITS: AtomicUsize = AtomicUsize::new(0);
|
||||
// assume hosts always have at least 512k of stack
|
||||
const HOST_STACK: usize = 512 * 1024;
|
||||
// assume hosts always have at least 128k of stack
|
||||
const HOST_STACK: usize = 128 * 1024;
|
||||
|
||||
let mut store = Store::<()>::default();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user