New issue
Advanced search Search tips
Starred by 18 users

Issue metadata

Status: Fixed
Owner:
Closed: Jun 2016
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Windows
Pri: 1
Type: Bug



Sign in to add a comment

Exposing Array.prototype.values breaks Microsoft Dynamics CRM Lookup

Reported by cristian...@gmail.com, May 30 2016

Issue description

UserAgent: Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.63 Safari/537.36

Steps to reproduce the problem:
A full description of the behavior http://www.crmanswers.net/2014/10/lookup-errors-with-google-chrome-38.html 

What is the expected behavior?

What went wrong?
The problem first appeared in Chrome version 38 , and was fixed in version 39 ( https://bugs.chromium.org/p/chromium/issues/detail?id=409858 ) 

Did this work before? Yes Versions 39 to 50

Chrome version: 51.0.2704.63  Channel: stable
OS Version: 6.3
Flash Version: Shockwave Flash 21.0 r0
 
Cc: adamk@chromium.org
Components: -Blink Blink>JavaScript
Components: -Blink>JavaScript Blink>JavaScript>Language
Owner: adamk@chromium.org
Status: Available (was: Unconfirmed)
Status: Assigned (was: Available)

Comment 4 by adamk@chromium.org, Jun 2 2016

Is this impacting up-to-date installations of this CRM product? Array.prototype.values is an established part of JavaScript at this point, and exists not just in Chrome but also in modern versions of Edge, Safari, and an upcoming release of Firefox.

Comment 5 by ajha@chromium.org, Jun 16 2016

 Issue 620556  has been merged into this issue.

Comment 6 by adamk@chromium.org, Jun 17 2016

 Issue 620964  has been merged into this issue.

Comment 7 by adamk@chromium.org, Jun 17 2016

Cc: -adamk@chromium.org hablich@chromium.org
Labels: M-51 M-52
Michael, we have more reports coming in. I'm thinking we want to merge an un-flipping of the Array.prototype.values flag.
Labels: -Pri-2 Merge-approved-5.2 Merge-Approved-5.1 Pri-1
As discussed, let's switch it off on all channels
Project Member

Comment 9 by bugdroid1@chromium.org, Jun 17 2016

The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/43a10a0c4a3f3ba859fab199227590bc79a608d2

commit 43a10a0c4a3f3ba859fab199227590bc79a608d2
Author: adamk <adamk@chromium.org>
Date: Fri Jun 17 10:37:19 2016

Disable Array.prototype.values

It still seems to break things in the wild, see attached Chromium
bug for details.

BUG= v8:4247 ,  chromium:615873 

Review-Url: https://codereview.chromium.org/2076763003
Cr-Commit-Position: refs/heads/master@{#37064}

[modify] https://crrev.com/43a10a0c4a3f3ba859fab199227590bc79a608d2/src/flag-definitions.h
[modify] https://crrev.com/43a10a0c4a3f3ba859fab199227590bc79a608d2/test/test262/test262.status

Comment 10 by phistuck@gmail.com, Jun 17 2016

Is "the wild" here basically Microsoft CRM?
Have you found other breakages? If so, can you give some examples?
It seems a bit backwards, to revert a feature because of one system. The Blink policy is generally not to let a single site (or a system, I guess) dictate web compatibility...
Edge has shipped it since its beginning, though those users probably use Internet Explorer (or, apparently, Chrome) instead. Firefox 48 or 49 will be shipping it.

Comment 11 by adamk@chromium.org, Jun 17 2016

I'm curious what Blink policy you're referring to. In general we (V8) try to avoid breaking any significant number of users with feature changes.

For this particular feature, the value of the feature is quite low compared to the breakage it causes.

Comment 12 by phistuck@gmail.com, Jun 17 2016

Perhaps a policy is a strong word. See this post -
https://groups.google.com/a/chromium.org/d/msg/blink-dev/EHy8zm0eVy0/Y1pKHszGBgAJ

Comment 13 by adamk@chromium.org, Jun 18 2016

Cc: foolip@chromium.org rbyers@chromium.org
Thanks for the reference. I think this case is somewhat different. It's not "one site" so much as "one piece of software that's installed on many sites". In JS, at least, this has caused spec changes in the past (see Array.prototype.contains -> includes, for example).

CCing Rick and Philip for their thoughts on how to handle cases like this (though I intend to merge to M51 and M52 on Monday).
Looks like a first attempt to ship this in M38 failed, and even though it's already shipping in Edge and Safari it's still breaking things this time?

Blink policy doesn't really apply since this is V8, but in any case reverting while investigating seems like the responsible thing to do.

This is basically a problematic library, so like #4 I wonder if this has been fixed upstream.
Project Member

Comment 15 by sheriffbot@chromium.org, Jun 20 2016

This issue has been approved for a merge. Please merge the fix to any appropriate branches as soon as possible!

If all merges have been completed, please remove any remaining Merge-Approved labels from this issue.

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
Hi,

For solution of this error I have to Contact Microsoft or this will be fix
in browser team.  As in Microsoft Internet Explorer and Mozila Firefox is
not having this error. Resolution required urgently else we have to ask to
continue using Microsoft IE/Mozila Firefox to users.

Waiting for positive reply.

Thanks.
KAPIL SINHA.
8860025682
Project Member

Comment 17 by bugdroid1@chromium.org, Jun 20 2016

Labels: merge-merged-5.1
The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/bf7aa5e45a0ecbc4b46c232cde94ae7425c49e4f

commit bf7aa5e45a0ecbc4b46c232cde94ae7425c49e4f
Author: Adam Klein <adamk@chromium.org>
Date: Mon Jun 20 16:51:31 2016

Version 5.1.281.66 (cherry-pick)

Merged 43a10a0c4a3f3ba859fab199227590bc79a608d2

Disable Array.prototype.values

BUG= chromium:615873 , v8:4247 
LOG=N
R=littledan@chromium.org

Review URL: https://codereview.chromium.org/2083663002 .

Cr-Commit-Position: refs/branch-heads/5.1@{#77}
Cr-Branched-From: 167dc63b4c9a1d0f0fe1b19af93644ac9a561e83-refs/heads/5.1.281@{#1}
Cr-Branched-From: 03953f52bd4a184983a551927c406be6489ef89b-refs/heads/master@{#35282}

[modify] https://crrev.com/bf7aa5e45a0ecbc4b46c232cde94ae7425c49e4f/include/v8-version.h
[modify] https://crrev.com/bf7aa5e45a0ecbc4b46c232cde94ae7425c49e4f/src/flag-definitions.h
[modify] https://crrev.com/bf7aa5e45a0ecbc4b46c232cde94ae7425c49e4f/test/test262/test262.status

Project Member

Comment 18 by bugdroid1@chromium.org, Jun 20 2016

Labels: merge-merged-5.2
The following revision refers to this bug:
  https://chromium.googlesource.com/v8/v8.git/+/4b9df6af9b28a0a6424a8f8695d6ab0f2fd87a7b

commit 4b9df6af9b28a0a6424a8f8695d6ab0f2fd87a7b
Author: Adam Klein <adamk@chromium.org>
Date: Mon Jun 20 17:03:05 2016

Version 5.2.361.23 (cherry-pick)

Merged 43a10a0c4a3f3ba859fab199227590bc79a608d2

Disable Array.prototype.values

BUG= chromium:615873 , v8:4247 
LOG=N
R=littledan@chromium.org

Review URL: https://codereview.chromium.org/2080813002 .

Cr-Commit-Position: refs/branch-heads/5.2@{#29}
Cr-Branched-From: 2cd36d6d0439ddfbe84cd90e112dced85084ec95-refs/heads/5.2.361@{#1}
Cr-Branched-From: 3fef34e02388e07d46067c516320f1ff12304c8e-refs/heads/master@{#36332}

[modify] https://crrev.com/4b9df6af9b28a0a6424a8f8695d6ab0f2fd87a7b/include/v8-version.h
[modify] https://crrev.com/4b9df6af9b28a0a6424a8f8695d6ab0f2fd87a7b/src/flag-definitions.h
[modify] https://crrev.com/4b9df6af9b28a0a6424a8f8695d6ab0f2fd87a7b/test/test262/test262.status

Comment 19 by adamk@chromium.org, Jun 20 2016

Labels: -Merge-Approved-5.1 -Merge-approved-5.2
Status: Fixed (was: Assigned)

Comment 20 by jcre...@gmail.com, Jun 21 2016

The ES6 spec has been finalized and it includes Array.prototype.values: http://www.ecma-international.org/ecma-262/6.0/#sec-array.prototype.values
So what happens when this regression gets released and someone files a issue that Array.prototype.values no longer exists?

Steps to reproduce the problem:
var foo = [1, 2, 3]
var values = foo.values()

What is the expected behavior?
It should return a new Array Iterator object that contains the values for each index in the array.

What went wrong?
Got a TypeError saying "foo.values is not a function"

Did this work before?
Yes. Versions 38 and 51.
Hello Guys,

Just checking, do we have an ETA when this fix will be released?

Thanks,

Comment 22 by adamk@chromium.org, Jun 27 2016

Cc: adamk@chromium.org
 Issue 623497  has been merged into this issue.

Comment 23 by m.go...@gmail.com, Jul 11 2016

Chrome 51 still has Array#values. Seeing how it has been live for more than 6 weeks and the world hasn't ended, is it really necessary to unship it? Especially considering that Edge is shipping it and Safari 10 is most likely going to ship with it.

Comment 24 by m.go...@gmail.com, Jul 11 2016

Correction: not only Safari 10 will most likely ship with it but Safari 9.1 contains this API already. And has for more than half a year now.
I raised a ticket to the Google chrome team below:
https://bugs.chromium.org/p/chromium/issues/detail?id=623497

I think we have same issue. The issue is resolved on Beta Ver.52.
However, I would like to know when the fix will release to regular update.

Don't need the exact time but approximate time is also okay.

Please let us know the tentative time to release the fix as regularly.

Thanks for your effort.

Comment 26 by phistuck@gmail.com, Jul 12 2016

@adamk -
I guess either the merge was unsuccessful, or no one made Chrome use the patched V8 branch, because [].values returns an ArrayIterator in Chrome 51.0.2704.106.

Comment 27 by adamk@chromium.org, Jul 12 2016

There simply hasn't been a Chrome 51 release that included the merge. The recommended fix for now is to switch to 52 Beta. It will also be included in the 52 Stable release.
Labels: backport-done
Labels: -Backport-Done NodeJS-Backport-Done

Sign in to add a comment