From cc9a8a37445eeffff17474020bb6038c2f9af9fc Mon Sep 17 00:00:00 2001 From: Gus Caplan Date: Mon, 31 Jan 2022 08:06:04 -0600 Subject: [PATCH] fix overflow check in error formatting Bug: v8:12494 Change-Id: Iba2684173296aa236f1a1c73a5606c21472eff06 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3426634 Reviewed-by: Jakob Kummerow Commit-Queue: Gus Caplan Cr-Commit-Position: refs/heads/main@{#78909} --- src/execution/messages.cc | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/execution/messages.cc b/src/execution/messages.cc index 122687b3fd54..21321a4155e8 100644 --- a/src/execution/messages.cc +++ b/src/execution/messages.cc @@ -305,7 +305,8 @@ MaybeHandle ErrorUtils::FormatStackTrace(Isolate* isolate, const bool in_recursion = isolate->formatting_stack_trace(); const bool has_overflowed = i::StackLimitCheck{isolate}.HasOverflowed(); Handle error_context; - if (!in_recursion && error->GetCreationContext().ToHandle(&error_context)) { + if (!in_recursion && !has_overflowed && + error->GetCreationContext().ToHandle(&error_context)) { DCHECK(error_context->IsNativeContext()); if (isolate->HasPrepareStackTraceCallback()) { @@ -321,7 +322,7 @@ MaybeHandle ErrorUtils::FormatStackTrace(Isolate* isolate, isolate->RunPrepareStackTraceCallback(error_context, error, sites), Object); return result; - } else if (!has_overflowed) { + } else { Handle global_error = handle(error_context->error_function(), isolate);