new_it.done() == old_it.done() in objects-debug.cc |
||||||
Issue descriptionDetailed report: https://cluster-fuzz.appspot.com/testcase?key=5358838317580288 Fuzzer: mbarbella_js_mutation Job Type: linux_asan_d8_v8_arm_dbg Platform Id: linux Crash Type: CHECK failure Crash Address: Crash State: new_it.done() == old_it.done() in objects-debug.cc Sanitizer: address (ASAN) Regressed: V8: 42483:42484 Reproducer Testcase: https://cluster-fuzz.appspot.com/download/AMIfv95yc7KsEYmzs5dZsbhmrW1QEl0snoyzoxo-ygRr6x2rIoA53MRJDinqIAKvXqE8_TDxHvP53YrmTiL2LZIXkoz_9-uBMIrGPta9DXd8TCHsnJCoa4f1teci5fzTv6dsJ_fk6ByzfaFuQvAtxuBAX4LS6zxHq5Tl7vy7HfnokOTUhXW3GG9jzJ8mtHSHEnhky00yrRFJT-cvwg_Zh0jN-Z1vgNJIO7umJ7FpIjOyTJBqeY8W7vVz71TNH9PjW6W9Oi8aw2thM00beLGEedg6eM17_xXb4o-2hMcYfBuVtZPHGzwpNjYXjhvCk7fm-eLjfgtogNkMHSw-h6CyaNuiMIqC8cOL7mHcHGIR5oCg_lF1e2vtlhzyxBuxfEHmGt_mqNFrWID9F83UNUfDpWkniubXOwlM0A?testcase_id=5358838317580288 Issue filed automatically. See https://dev.chromium.org/Home/chromium-security/bugs/reproducing-clusterfuzz-bugs for more information.
,
Feb 16 2017
Adam, can you please have a look at this one? Seems to depend on with and arrow destructuring.
,
Feb 16 2017
,
Feb 16 2017
Minimized test case (flags: "--always-opt --no-lazy --turbo-filter=whatever"):
```
function g() { eval() }
with ({}) { }
f = ({x}) => { };
f();
```
,
Feb 16 2017
The thing that causes the CHECK failure is that, upon recompilation, the variable x, which was marked as context-allocated on first compilation, is marked as local during recompilation. Still working on why this set of flags causes that to happen, and why it doesn't happen without those flags.
,
Feb 16 2017
It seems that "--turbo-filter=whatever" does what I would have expected "--noturbo --noignition" to do. Also, my hunch is that what causes this to work "correctly" in the ignition/turbo path is that our eager compilation of the arrow function, which treats x as context-allocated, never gets re-run. Instead we use the BytecodeGraphBuilder, which avoids being able to make the mistake of re-parsing f (and thus seeing, on a lazy parse, that x does not need to be context-allocated).
,
Feb 16 2017
The right fix here is to be exact about recording the presence (or non-presence) of eval calls inside arrow parameter lists. I'm going to see about finally doing that.
,
Feb 17 2017
Lowering priority because I think this configuration is unlikely to exist in the wild.
,
Feb 28 2017
The following revision refers to this bug: https://chromium.googlesource.com/v8/v8.git/+/fc023664bdb2bb9d76850655c1c8e7770802904e commit fc023664bdb2bb9d76850655c1c8e7770802904e Author: Adam Klein <adamk@chromium.org> Date: Tue Feb 28 19:15:09 2017 Accurately record eval calls in arrow parameter lists Previously, we over-approximated Scope::scope_calls_eval_ in arrow functions: if either the outer scope or the arrow function parameters had a direct eval call, we marked both scopes as calling eval. This over-approximation kept getting us into trouble, though, especially when eager or lazy parsing would disagree about the "calls eval" bit. This patch instead tracks eval calls accurately, using a boolean on Scope::Snapshot that is reset as appropriately depending on whether a particular AssignmentExpression turned out to be an arrow parameter list or not. BUG= chromium:691687 Change-Id: I527dc59b4d32a2797805ff26dc9f70b1311377b2 Reviewed-on: https://chromium-review.googlesource.com/446094 Commit-Queue: Adam Klein <adamk@chromium.org> Reviewed-by: Marja Hölttä <marja@chromium.org> Reviewed-by: Toon Verwaest <verwaest@chromium.org> Cr-Commit-Position: refs/heads/master@{#43499} [modify] https://crrev.com/fc023664bdb2bb9d76850655c1c8e7770802904e/src/ast/scopes.cc [modify] https://crrev.com/fc023664bdb2bb9d76850655c1c8e7770802904e/src/ast/scopes.h [modify] https://crrev.com/fc023664bdb2bb9d76850655c1c8e7770802904e/src/parsing/parse-info.cc [modify] https://crrev.com/fc023664bdb2bb9d76850655c1c8e7770802904e/src/parsing/parse-info.h [modify] https://crrev.com/fc023664bdb2bb9d76850655c1c8e7770802904e/src/parsing/parser-base.h [modify] https://crrev.com/fc023664bdb2bb9d76850655c1c8e7770802904e/src/parsing/parser.cc [add] https://crrev.com/fc023664bdb2bb9d76850655c1c8e7770802904e/test/mjsunit/regress/regress-crbug-691687.js
,
Feb 28 2017
|
||||||
►
Sign in to add a comment |
||||||
Comment 1 by ClusterFuzz
, Feb 15 2017