Skip to content
This repository has been archived by the owner on Mar 25, 2018. It is now read-only.

Commit

Permalink
[debug] Disable debug events if JS execution is disallowed
Browse files Browse the repository at this point in the history
We cannot generate debug events if JS execution is disallowed since
vital debugging logic is still implemented in JS. Return early from
Debug::OnException if that is the case.

BUG=chromium:662674

Review-Url: https://codereview.chromium.org/2491443002
Cr-Commit-Position: refs/heads/master@{#40858}
  • Loading branch information
schuay authored and Commit bot committed Nov 9, 2016
1 parent b621987 commit 8f22fce
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 0 deletions.
5 changes: 5 additions & 0 deletions src/debug/debug.cc
Original file line number Diff line number Diff line change
Expand Up @@ -1777,6 +1777,11 @@ void Debug::OnPromiseReject(Handle<Object> promise, Handle<Object> value) {


void Debug::OnException(Handle<Object> exception, Handle<Object> 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.
Expand Down
14 changes: 14 additions & 0 deletions test/debugger/debug/regress/regress-662674.js
Original file line number Diff line number Diff line change
@@ -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);

0 comments on commit 8f22fce

Please sign in to comment.