v8/test/debugger/debug
Seth Brenith 3c20dfeda1 [debug] Don't crash when breaking on entry to functions with heap vars
Any function with heap-allocated variables starts by creating and
pushing a new context for its execution. When entering the debugger due
to the stack check in the beginning of InterpreterEntryTrampoline, the
function has not yet had a chance to push that new context. The code in
ScopeIterator currently assumes that any function which needs a context
already has one by the time the debugger attempts to iterate scopes, but
in this case that assumption is invalid, which can cause a null deref.

This change introduces a new function ScopeIterator::NeedsAndHasContext
to replace previous calls to current_scope_->NeedsContext(). This new
function checks for the case where the current scope matches the closure
scope but the context matches the containing context for the function,
which implies that the function has not yet pushed its own context.

Bug: v8:10319, chromium:1038747
Change-Id: I29636f269c44d35b68d8446769d17170eed50e89
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2168021
Commit-Queue: Seth Brenith <seth.brenith@microsoft.com>
Reviewed-by: Simon Zünd <szuend@chromium.org>
Cr-Commit-Position: refs/heads/master@{#67519}
2020-05-01 18:21:36 +00:00
..
compiler Reland "[Test] Update tests to work with lazy feedback allocation." 2019-05-08 12:51:13 +00:00
es6 [Promise.any] Add Promise.any 2020-04-30 14:24:47 +00:00
es8 Replace %RunMicrotasks with %PerformMicrotaskCheckpoint 2018-12-06 11:10:18 +00:00
harmony [test] Remove module pragma in favor of .mjs 2019-06-27 13:25:48 +00:00
ignition [Test] Add PrepareForOptimization to debugger/ tests. 2019-04-29 13:47:16 +00:00
regress [debug] Don't crash when breaking on entry to functions with heap vars 2020-05-01 18:21:36 +00:00
side-effect Mark intrinsics AsyncFunction{Enter,Reject,Resolve} as side-effect free 2020-01-21 08:45:17 +00:00
wasm [wasm][debug] Reenable skipped debug-step-into-wasm test 2020-04-15 09:23:07 +00:00
debug-allscopes-on-debugger.js [inspector] improve return position of explicit return in non-async function 2017-07-14 19:10:13 +00:00
debug-backtrace.js [tests] Fix assertFalse(exception) anti-pattern 2018-03-21 10:59:46 +00:00
debug-bigint.js Remove always-true --harmony-bigint runtime flag 2018-10-01 11:31:13 +00:00
debug-break-class-fields.js [class] Make class field initializers breakable in the debugger 2018-09-17 22:25:44 +00:00
debug-break-inline.js [Test] Add PrepareForOptimization to debugger/ tests. 2019-04-29 13:47:16 +00:00
debug-break-microtask.js [debug] add microtask-related tests. 2017-10-03 12:56:17 +00:00
debug-break-native.js [debug] retire ScriptWrapper 2018-07-05 21:33:03 +00:00
debug-break-return.js [debug] removed most debugger js 2018-06-03 06:02:59 +00:00
debug-breakpoints.js [debug-wrapper] Further extend the debug wrapper 2016-11-16 08:34:44 +00:00
debug-clearbreakpoint.js [tests] Fix assertFalse(exception) anti-pattern 2018-03-21 10:59:46 +00:00
debug-compile-event.js [tests] Fix assertFalse(exception) anti-pattern 2018-03-21 10:59:46 +00:00
debug-compile-optimized.js [Test] Add PrepareForOptimization to debugger/ tests. 2019-04-29 13:47:16 +00:00
debug-conditional-breakpoints.js [debug-wrapper] Migrate more tests 2016-11-22 12:44:18 +00:00
debug-constructor.js [debugger] Stepping and break-related functions in wrapper 2016-11-08 13:54:37 +00:00
debug-enable-disable-breakpoints.js [debug-wrapper] Further extend the debug wrapper 2016-11-16 08:34:44 +00:00
debug-eval-scope.js [debug] Add Eval scope type to inspector protocol 2016-11-23 07:30:23 +00:00
debug-evaluate-arguments.js [Test] Add PrepareForOptimization to debugger/ tests. 2019-04-29 13:47:16 +00:00
debug-evaluate-bool-constructor.js [tests] Fix assertFalse(exception) anti-pattern 2018-03-21 10:59:46 +00:00
debug-evaluate-closure.js [debugger] remove debugger statement support from FCG/CS. 2017-02-22 08:45:09 +00:00
debug-evaluate-dead-function-fails.js [parser] Allow declaring variables without a proxy 2019-01-25 09:10:59 +00:00
debug-evaluate-declaration.js [debug-wrapper] Conditional breaks, locals, evaluate, scopes 2016-11-11 12:08:34 +00:00
debug-evaluate-function-var.js Reland "[debugger] Expose reference to the function in debug-evaluate" 2019-06-27 06:09:22 +00:00
debug-evaluate-local-repl-hole.js Introduce REPL mode 2019-11-06 09:17:04 +00:00
debug-evaluate-locals-capturing.js Reland "[Compiler] Remove CompileDebugCode and EnsureBytecode and replace with Compile" 2017-08-17 13:21:44 +00:00
debug-evaluate-locals-optimized-double.js [Test] Add PrepareForOptimization to debugger/ tests. 2019-04-29 13:47:16 +00:00
debug-evaluate-locals-optimized.js [Test] Add PrepareForOptimization to debugger/ tests. 2019-04-29 13:47:16 +00:00
debug-evaluate-locals.js [tests] Fix assertFalse(exception) anti-pattern 2018-03-21 10:59:46 +00:00
debug-evaluate-modify-catch-block-scope.js [parser] Allow declaring variables without a proxy 2019-01-25 09:10:59 +00:00
debug-evaluate-modify-this.js [debugger] Further stepping support in test wrapper 2016-11-07 12:25:24 +00:00
debug-evaluate-nested-let.js Use --opt instead of --crankshaft in tests. 2017-04-28 14:20:39 +00:00
debug-evaluate-repl-mode-await.js Reland "Implement top-level await for REPL mode" 2019-12-06 10:13:00 +00:00
debug-evaluate-repl-mode-optimized.js Introduce REPL mode 2019-11-06 09:17:04 +00:00
debug-evaluate-repl-mode.js Reland "Implement top-level await for REPL mode" 2019-12-06 10:13:00 +00:00
debug-evaluate-shadowed-context-2.js [debugger] Further stepping support in test wrapper 2016-11-07 12:25:24 +00:00
debug-evaluate-shadowed-context-3.js Change debug-evaluate from a whitelist to a blacklist approach 2019-09-11 07:52:45 +00:00
debug-evaluate-shadowed-context.js [debug-wrapper] Migrate more tests 2016-11-22 12:44:18 +00:00
debug-evaluate-with.js [tests] Fix assertFalse(exception) anti-pattern 2018-03-21 10:59:46 +00:00
debug-evaluate.js [tests] Fix assertFalse(exception) anti-pattern 2018-03-21 10:59:46 +00:00
debug-event-listener.js [debug-wrapper] Add caught/uncaught to exception pauses 2016-11-10 09:05:29 +00:00
debug-exceptions.js [debug-wrapper] Add caught/uncaught to exception pauses 2016-11-10 09:05:29 +00:00
debug-function-scopes.js [debug-wrapper] Migrate more tests 2016-11-22 12:44:18 +00:00
debug-generator-break-on-stack.js [debugger] Further stepping support in test wrapper 2016-11-07 12:25:24 +00:00
debug-generator-break.js [debugger] Further stepping support in test wrapper 2016-11-07 12:25:24 +00:00
debug-liveedit-1.js [debug] migrate all liveedit tests to use LiveEdit::PatchScript 2018-06-21 15:34:16 +00:00
debug-liveedit-2.js [debug] migrate all liveedit tests to use LiveEdit::PatchScript 2018-06-21 15:34:16 +00:00
debug-liveedit-3.js [debug] migrate all liveedit tests to use LiveEdit::PatchScript 2018-06-21 15:34:16 +00:00
debug-liveedit-4.js [debug] migrate all liveedit tests to use LiveEdit::PatchScript 2018-06-21 15:34:16 +00:00
debug-liveedit-arrow-function-at-start.js [liveedit] Fix patching functions with start position zero 2018-07-18 16:20:22 +00:00
debug-liveedit-check-stack.js [debug] migrate all liveedit tests to use LiveEdit::PatchScript 2018-06-21 15:34:16 +00:00
debug-liveedit-compile-error.js [debug] migrate all liveedit tests to use LiveEdit::PatchScript 2018-06-21 15:34:16 +00:00
debug-liveedit-double-call.js [debug] retire ScriptWrapper 2018-07-05 21:33:03 +00:00
debug-liveedit-exceptions.js [debug] migrate all liveedit tests to use LiveEdit::PatchScript 2018-06-21 15:34:16 +00:00
debug-liveedit-inline.js [Test] Add PrepareForOptimization to debugger/ tests. 2019-04-29 13:47:16 +00:00
debug-liveedit-literals.js [debug] migrate all liveedit tests to use LiveEdit::PatchScript 2018-06-21 15:34:16 +00:00
debug-liveedit-newsource.js [debug] migrate all liveedit tests to use LiveEdit::PatchScript 2018-06-21 15:34:16 +00:00
debug-liveedit-patch-positions-replace.js [test] Fixes a spelling typo 2020-04-06 18:16:55 +00:00
debug-liveedit-recursion.js [test] Rename debugger test 2018-09-14 11:17:04 +00:00
debug-liveedit-replace-code.js [debug] migrate all liveedit tests to use LiveEdit::PatchScript 2018-06-21 15:34:16 +00:00
debug-liveedit-restart-frame.js [ignition/turbo] Perform liveness analysis on the bytecodes 2016-11-29 12:27:15 +00:00
debug-liveedit-stepin.js Reland "[debug] liveedit in native" 2018-07-03 21:01:57 +00:00
debug-materialized.js [Test] Add PrepareForOptimization to debugger/ tests. 2019-04-29 13:47:16 +00:00
debug-modules-set-variable-value.mjs [test] Remove module pragma in favor of .mjs 2019-06-27 13:25:48 +00:00
debug-multiple-breakpoints.js [debug-wrapper] Migrate more tests 2016-11-22 12:44:18 +00:00
debug-multiple-var-decl.js [inspector] improve return position of explicit return in non-async function 2017-07-14 19:10:13 +00:00
debug-negative-break-points.js [debug-wrapper] Migrate more tests 2016-11-22 12:44:18 +00:00
debug-optimize.js [Test] Add PrepareForOptimization to debugger/ tests. 2019-04-29 13:47:16 +00:00
debug-print.js [elements] Rename FAST elements kinds 2017-06-30 13:31:44 +00:00
debug-receiver.js Fix common misspellings 2017-08-02 09:35:28 +00:00
debug-return-value.js [tests] Fix assertFalse(exception) anti-pattern 2018-03-21 10:59:46 +00:00
debug-scopes-suspended-generators.js [turbofan] Only save live registers on suspend 2018-02-07 18:07:30 +00:00
debug-scopes.js [Test] Add PrepareForOptimization to debugger/ tests. 2019-04-29 13:47:16 +00:00
debug-set-variable-value.js [debugger] remove debugger statement support from FCG/CS. 2017-02-22 08:45:09 +00:00
debug-stack-check-position.js [debugger] Further stepping support in test wrapper 2016-11-07 12:25:24 +00:00
debug-step-2.js [debugger] Further stepping support in test wrapper 2016-11-07 12:25:24 +00:00
debug-step-3.js [debugger] Further stepping support in test wrapper 2016-11-07 12:25:24 +00:00
debug-step-4.js [debugger] Further stepping support in test wrapper 2016-11-07 12:25:24 +00:00
debug-step-end-of-script.js Reland "[inspector] fixed location of top level function return" 2018-06-18 21:37:49 +00:00
debug-step-into-json.js [inspector] improve return position of explicit return in non-async function 2017-07-14 19:10:13 +00:00
debug-step-into-valueof.js [inspector] improve return position of explicit return in non-async function 2017-07-14 19:10:13 +00:00
debug-step-microtask.js Reland "[inspector] fixed location of top level function return" 2018-06-18 21:37:49 +00:00
debug-step-stub-callfunction.js [debugger] Further stepping support in test wrapper 2016-11-07 12:25:24 +00:00
debug-step-turbofan.js [Test] Add PrepareForOptimization to debugger/ tests. 2019-04-29 13:47:16 +00:00
debug-step.js [debugger] correctly annotate scripts with debug id. 2017-03-13 09:13:43 +00:00
debug-stepin-accessor-ic.js [debugger] Further stepping support in test wrapper 2016-11-07 12:25:24 +00:00
debug-stepin-accessor.js [tests] Async test framework 2017-07-26 17:40:15 +00:00
debug-stepin-builtin-callback-opt.js [inspector] improve return position of explicit return in non-async function 2017-07-14 19:10:13 +00:00
debug-stepin-builtin-callback.js [debugger] Further stepping support in test wrapper 2016-11-07 12:25:24 +00:00
debug-stepin-builtin.js [debugger] Further stepping support in test wrapper 2016-11-07 12:25:24 +00:00
debug-stepin-call-function-stub.js [debugger] Further stepping support in test wrapper 2016-11-07 12:25:24 +00:00
debug-stepin-construct-call.js [debugger] Further stepping support in test wrapper 2016-11-07 12:25:24 +00:00
debug-stepin-constructor.js [debugger] Further stepping support in test wrapper 2016-11-07 12:25:24 +00:00
debug-stepin-foreach.js [inspector] improve return position of explicit return in non-async function 2017-07-14 19:10:13 +00:00
debug-stepin-function-call.js [debugger] Further stepping support in test wrapper 2016-11-07 12:25:24 +00:00
debug-stepin-property-function-call.js [tests] Async test framework 2017-07-26 17:40:15 +00:00
debug-stepnext-do-while.js [debugger] Further stepping support in test wrapper 2016-11-07 12:25:24 +00:00
debug-stepout-recursive-function.js [debugger] Further stepping support in test wrapper 2016-11-07 12:25:24 +00:00
debug-stepout-scope-part1.js [debugger] Further stepping support in test wrapper 2016-11-07 12:25:24 +00:00
debug-stepout-scope-part2.js [debugger] Further stepping support in test wrapper 2016-11-07 12:25:24 +00:00
debug-stepout-scope-part3.js [debugger] Further stepping support in test wrapper 2016-11-07 12:25:24 +00:00
debug-stepout-scope-part4.js [debugger] Further stepping support in test wrapper 2016-11-07 12:25:24 +00:00
debug-stepout-scope-part5.js [debugger] Further stepping support in test wrapper 2016-11-07 12:25:24 +00:00
debug-stepout-scope-part6.js [debugger] Further stepping support in test wrapper 2016-11-07 12:25:24 +00:00
debug-stepout-scope-part7.js [debugger] Further stepping support in test wrapper 2016-11-07 12:25:24 +00:00
debug-stepout-scope-part8.js [debugger] Further stepping support in test wrapper 2016-11-07 12:25:24 +00:00
debug-stepout-to-builtin.js [debugger] Further stepping support in test wrapper 2016-11-07 12:25:24 +00:00
deserialize-script-id.js [debug] retire ScriptWrapper 2018-07-05 21:33:03 +00:00
for-in-opt.js [Test] Add PrepareForOptimization to debugger/ tests. 2019-04-29 13:47:16 +00:00
function-source.js [debug-wrapper] clearAllBreakPoints and several scripts functions 2016-11-17 09:34:18 +00:00
lazy-deopt-then-flush-bytecode.js [Test] Add PrepareForOptimization to debugger/ tests. 2019-04-29 13:47:16 +00:00
regress-3225.js [parser] Allow declaring variables without a proxy 2019-01-25 09:10:59 +00:00
regress-5207.js [ignition/turbo] Perform liveness analysis on the bytecodes 2016-11-29 12:27:15 +00:00