diff --git a/.github/workflows/compilation_on_macos.yml b/.github/workflows/compilation_on_macos.yml index 559f25ed79..d9598a00be 100644 --- a/.github/workflows/compilation_on_macos.yml +++ b/.github/workflows/compilation_on_macos.yml @@ -380,9 +380,7 @@ jobs: ./iwasm wasm-apps/trap.aot | grep "#" > call_stack_aot.txt bash -x ../symbolicate.sh - # skip on arm64 (macos-14) for now - name: Build Sample [native-stack-overflow] - if: matrix.os != 'macos-14' run: | cd samples/native-stack-overflow ./build.sh diff --git a/core/config.h b/core/config.h index b2e07da28c..0a77ec949e 100644 --- a/core/config.h +++ b/core/config.h @@ -523,8 +523,13 @@ /* Guard page count for stack overflow check with hardware trap */ #ifndef STACK_OVERFLOW_CHECK_GUARD_PAGE_COUNT +#if defined(__APPLE__) && defined(__aarch64__) +/* Note: on macOS/iOS arm64, the user page size is 16KB */ +#define STACK_OVERFLOW_CHECK_GUARD_PAGE_COUNT 1 +#else #define STACK_OVERFLOW_CHECK_GUARD_PAGE_COUNT 3 #endif +#endif /* Default wasm block address cache size and conflict list size */ #ifndef BLOCK_ADDR_CACHE_SIZE diff --git a/samples/native-stack-overflow/src/main.c b/samples/native-stack-overflow/src/main.c index 0719293233..8d42cc0aa1 100644 --- a/samples/native-stack-overflow/src/main.c +++ b/samples/native-stack-overflow/src/main.c @@ -113,10 +113,11 @@ main(int argc, char **argv) printf("-------------------------------------------------------------------" "--------\n"); + uint32_t page_size = os_getpagesize(); unsigned int stack; unsigned int prevstack = 0; /* appease GCC -Wmaybe-uninitialized */ unsigned int stack_range_start = 0; - unsigned int stack_range_end = 4096 * 6; + unsigned int stack_range_end = page_size * 6; unsigned int step = 16; struct record rec0; struct record rec1;