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),
|
profiler: Arc::new(NullProfilerAgent),
|
||||||
mem_creator: None,
|
mem_creator: None,
|
||||||
allocation_strategy: InstanceAllocationStrategy::OnDemand,
|
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,
|
wasm_backtrace_details_env_used: false,
|
||||||
features: WasmFeatures::default(),
|
features: WasmFeatures::default(),
|
||||||
#[cfg(feature = "async")]
|
#[cfg(feature = "async")]
|
||||||
@@ -444,7 +452,7 @@ impl Config {
|
|||||||
/// on stack overflow, a host function that overflows the stack will
|
/// on stack overflow, a host function that overflows the stack will
|
||||||
/// abort the process.
|
/// 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> {
|
pub fn max_wasm_stack(&mut self, size: usize) -> Result<&mut Self> {
|
||||||
#[cfg(feature = "async")]
|
#[cfg(feature = "async")]
|
||||||
if size > self.async_stack_size {
|
if size > self.async_stack_size {
|
||||||
|
|||||||
@@ -4,8 +4,8 @@ use wasmtime::*;
|
|||||||
#[test]
|
#[test]
|
||||||
fn host_always_has_some_stack() -> anyhow::Result<()> {
|
fn host_always_has_some_stack() -> anyhow::Result<()> {
|
||||||
static HITS: AtomicUsize = AtomicUsize::new(0);
|
static HITS: AtomicUsize = AtomicUsize::new(0);
|
||||||
// assume hosts always have at least 512k of stack
|
// assume hosts always have at least 128k of stack
|
||||||
const HOST_STACK: usize = 512 * 1024;
|
const HOST_STACK: usize = 128 * 1024;
|
||||||
|
|
||||||
let mut store = Store::<()>::default();
|
let mut store = Store::<()>::default();
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user