A few native stack detection fixes for macOS/arm64 (#3368)

This commit is contained in:
YAMAMOTO Takashi 2024-04-26 20:37:55 +09:00 committed by GitHub
parent 410ee580ae
commit 120b9659dd
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 7 additions and 3 deletions

View File

@ -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

View File

@ -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

View File

@ -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;