New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 781395 link

Starred by 3 users

Issue metadata

Status: WontFix
Owner:
Closed: Nov 2017
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Windows
Pri: 1
Type: Bug-Regression



Sign in to add a comment

Canary behavior change from LTG Chrome

Reported by cwe...@microsoft.com, Nov 3 2017

Issue description

UserAgent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36 Edge/15.15063

Steps to reproduce the problem:
1. Load the website in the wwwroot.zip file in both Chrome and ChromeCanary
2. Debug the multiply recursive method (around line 128 in the attached site.js file, which can also be found inside the wwwroot.zip), setting a breakpoint so you can see the locals
3. Examine the locals in Chrome Debug Tools on both versions of Chrome
4. See that the same exact site/scripts result in different local variable behavior between the two versions of Chrome

What is the expected behavior?
Inside the multiply-recursive method, Chrome LKG defines 'this', but ChromeCanary leaves it undefined.  See the attached image in which ChromeCanary is on the right, and ChromeLKG is on the left.

What went wrong?
This behavior difference between Chrome and ChromeCanary caused some of our test automation to fail when run on ChromeCanary.  Primarily, we'd like to know if this behavioral change is intentional, and whether it will eventually propagate to the main Chrome LKG releases.  Is it a bug, or is this change intentional?

Did this work before? Yes Worked on 62.0.3202.75, but it could also work on versions newer than that

Chrome version: 64.0.3257.1  Channel: canary
OS Version: 10.0
Flash Version:
 
Chrome-Chromium_DifferenceThatCausesTestFailure.png
131 KB View Download
site.js
7.6 KB View Download
Labels: Needs-Bisect Needs-Triage-M64
Cc: krajshree@chromium.org
Components: Platform>DevTools
Labels: Needs-Feedback
cwells@ - Thanks for filing the issue...!!

After unzipping the wwwroot.zip, was unable to find any website to launch. Hence, requesting you to please provide the website details in which the issue is observed. This will help us in triaging the issue further.

Thanks...!!
krajshree@ - My apologies for confusing you...!!

To simplify the issue I have deleted the "wwwroot.zip" file, as the only file of significance to my bug report is the "site.js" file mentioned and attached above.  The HTML/website context in which the script is run is unimportant.

I was hoping someone could investigate the difference in behavior between the different versions of Chrome (as shown in the attached screenshot), specifically regarding the population of the local variable "this" inside the multiply-recursive call around line 128 in site.js.

Thanks so much for your help triaging...!!
Project Member

Comment 4 by sheriffbot@chromium.org, Nov 6 2017

Labels: -Needs-Feedback
Thank you for providing more feedback. Adding requester "krajshree@chromium.org" to the cc list and removing "Needs-Feedback" label.

For more details visit https://www.chromium.org/issue-tracking/autotriage - Your friendly Sheriffbot

Comment 5 by kozy@chromium.org, Nov 6 2017

Owner: kozy@chromium.org
Status: Assigned (was: Unconfirmed)
Cc: kkaluri@chromium.org kozy@chromium.org
Labels: -Needs-Bisect hasbisect-per-revision
Owner: cbruni@chromium.org
Able to reproduce the issue on Windows 10, Ubuntu 14.04 and Mac 10.12.6 with chrome Dev #64.0.3253.3, Canary #64.0.3260.0
Issue broken in M-64

Bisect Info:
===========
Good build : 64.0.3248.0,  Revision Range -510988
Bad build  : 64.0.3249.0,  Revision Range -511318

After executing the per-revision bisect script , i got the following CL's between good and bad build versions
===========================================
https://chromium.googlesource.com/chromium/src/+log/f34c0ec7e1bae02695666d69135b1c6cce65ed46..8db1dff254d91155d679bfdded4360519c1a8932

The suspecting Change Log is :
-----------
https://chromium.googlesource.com/v8/v8/+/eff39bbb70e92dd8115f1ac8e3b48b5c53ad0a35


cbruni@- Could you please look into this issue, if it's related to your change?  if not could you please help us to reassign this issue to the right owner.

Comment 7 by e...@chromium.org, Nov 7 2017

Components: -Blink
Cc: ajha@chromium.org
Labels: -Pri-2 ReleaseBlock-Beta Pri-1
Owner: kozyatinskiy@chromium.org
Probably the following CL caused the change in DevTools:

a11b0d9 [inspector] improve this value for arrow function in scopes by Alexey Kozyatinskiy ยท 2 weeks ago

Can you have a look at it, Alexey?
Project Member

Comment 10 by sheriffbot@chromium.org, Nov 8 2017

This issue is marked as a release blocker with no milestone associated. Please add an appropriate milestone.

All release blocking issues should have milestones associated to it, so that the issue can tracked and the fixes can be pushed promptly.

Thanks for your time! To disable nags, add the Disable-Nags label.

For more details visit https://www.chromium.org/issue-tracking/autotriage - Your friendly Sheriffbot

Comment 11 by kozy@chromium.org, Nov 8 2017

This value in your arrow function should be undefined. You can check it by adding console.log(this) in your finalMethod. Arrow function gets this value when it is defined, so it gets this value from top level function which have no this value.
Before we show incorrect information.
I am not sure why this in you IIFE is undefined, I think it should be window.
Project Member

Comment 12 by sheriffbot@chromium.org, Nov 13 2017

This issue is marked as a release blocker with no milestone associated. Please add an appropriate milestone.

All release blocking issues should have milestones associated to it, so that the issue can tracked and the fixes can be pushed promptly.

Thanks for your time! To disable nags, add the Disable-Nags label.

For more details visit https://www.chromium.org/issue-tracking/autotriage - Your friendly Sheriffbot

Comment 13 by kozy@chromium.org, Nov 28 2017

Status: WontFix (was: Assigned)
Well, that's a bummer, and a very unsatisfying resolution.

This issue was marked as a "release blocker", and today get's resolved "Won't Fix" with no explanation?

Should I take this as meaning that the behavior change was intentional, and that you will be rolling this change into future version of stable Chrome?
Or just that you don't have the time or bandwidth to fix the problem now?

I would appreciate some additional explanation.

Thanks for your time,
Chris

Comment 15 by kozy@chromium.org, Nov 29 2017

Status: Assigned (was: WontFix)
I am not sure but by #11: it looks to me like previous behavior was incorrect. Arrow function should capture this when it is defined. If you put console.log(this) into your arrow function you can see that real this value is not OtherClass.

Comment 16 by kozy@chromium.org, Nov 30 2017

Owner: kozy@chromium.org

Comment 17 by kozy@chromium.org, Nov 30 2017

Status: WontFix (was: Assigned)
Okay, thanks Kozy!
We'll take the new behavior as correct, update our test automation accordingly, and expect to see the same behavior in all versions of Chrome in the future.

Sign in to add a comment