From bbdb840023e448a6445d598eddefce4cca35461b Mon Sep 17 00:00:00 2001 From: Alexander Markov Date: Tue, 18 Mar 2025 15:57:16 -0700 Subject: [PATCH] [vm, dynamic_modules] Handle native stack overflow in the interpreter TEST=corelib/error_stack_trace2_test Change-Id: I337c15eecddccbe770158fa493bf296c171f9f08 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/415940 Reviewed-by: Slava Egorov Commit-Queue: Alexander Markov --- runtime/vm/interpreter.cc | 3 ++- tests/corelib/corelib.status | 1 - tests/language/language.status | 1 - 3 files changed, 2 insertions(+), 3 deletions(-) diff --git a/runtime/vm/interpreter.cc b/runtime/vm/interpreter.cc index 5839b928e2a..e5dae841b3d 100644 --- a/runtime/vm/interpreter.cc +++ b/runtime/vm/interpreter.cc @@ -1828,7 +1828,8 @@ SwitchDispatch: // Check the interpreter's own stack limit for actual interpreter's stack // overflows, and also the thread's stack limit for scheduled interrupts. if (reinterpret_cast(SP) >= overflow_stack_limit() || - thread->HasScheduledInterrupts()) { + thread->HasScheduledInterrupts() || + !thread->os_thread()->HasStackHeadroom()) { Exit(thread, FP, SP + 1, pc); INVOKE_RUNTIME(DRT_InterruptOrStackOverflow, NativeArguments(thread, 0, nullptr, nullptr)); diff --git a/tests/corelib/corelib.status b/tests/corelib/corelib.status index e873b58ee20..06012bc2ad6 100644 --- a/tests/corelib/corelib.status +++ b/tests/corelib/corelib.status @@ -15,7 +15,6 @@ type_tostring_test: SkipByDesign # Expects names in Type.toString() [ $compiler == dart2bytecode ] core_runtime_types_test: SkipByDesign # Contains dynamic calls. -error_stack_trace2_test: Crash [ $compiler == dartkp ] bigint_parse_radix_test: Slow, Pass # --no_intrinsify diff --git a/tests/language/language.status b/tests/language/language.status index a8272789adb..3bd6efc417e 100644 --- a/tests/language/language.status +++ b/tests/language/language.status @@ -30,7 +30,6 @@ vm/type_cast_vm_test: SkipByDesign # Relies on symbol names [ $compiler == dart2bytecode ] class_modifiers/trans_legacy/legacy_superdeclaration_test: Crash const/inference_test: Crash -final/syntax_test/08: Crash regress/regress45763_test: Crash vm/reflect_core_vm_test: Crash