diff --git a/src/debug/debug.cc b/src/debug/debug.cc index 656472683060..cb1f34f390e5 100644 --- a/src/debug/debug.cc +++ b/src/debug/debug.cc @@ -1777,6 +1777,11 @@ void Debug::OnPromiseReject(Handle promise, Handle value) { void Debug::OnException(Handle exception, Handle promise) { + // We cannot generate debug events when JS execution is disallowed. + // TODO(5530): Reenable debug events within DisallowJSScopes once relevant + // code (MakeExceptionEvent and ProcessDebugEvent) have been moved to C++. + if (!AllowJavascriptExecution::IsAllowed(isolate_)) return; + Isolate::CatchType catch_type = isolate_->PredictExceptionCatcher(); // Don't notify listener of exceptions that are internal to a desugaring. diff --git a/test/debugger/debug/regress/regress-662674.js b/test/debugger/debug/regress/regress-662674.js new file mode 100644 index 000000000000..46054a5cd978 --- /dev/null +++ b/test/debugger/debug/regress/regress-662674.js @@ -0,0 +1,14 @@ +// Copyright 2016 the V8 project authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Flags: --stack-size=100 + +Debug = debug.Debug + +function overflow() { + return overflow(); +} + +Debug.setBreakOnException(); +assertThrows(overflow, RangeError);