Bug 221557 - JSC stress test stress/copy-data-properties-fast-path.js.default fails on s390x and ppc64le
Summary: JSC stress test stress/copy-data-properties-fast-path.js.default fails on s39...
Status: RESOLVED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: JavaScriptCore (show other bugs)
Version: WebKit Nightly Build
Hardware: PC Linux
: P2 Normal
Assignee: Michael Catanzaro
URL:
Keywords: InRadar
Depends on:
Blocks:
 
Reported: 2021-02-08 09:09 PST by Michael Catanzaro
Modified: 2021-02-14 11:06 PST (History)
4 users (show)

See Also:


Attachments
Patch (1.21 KB, patch)
2021-02-11 07:36 PST, Michael Catanzaro
no flags Details | Formatted Diff | Diff
Patch for landing (1.25 KB, patch)
2021-02-14 10:20 PST, Michael Catanzaro
no flags Details | Formatted Diff | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Michael Catanzaro 2021-02-08 09:09:26 PST
This new test from bug #221454 is broken on s390x and ppc64le, but works on x86_64 and aarch64. This is a little odd since these architectures have little in common. All architectures have JIT disabled and cloop enabled. The test is:

//@ runDefault("--slowPathAllocsBetweenGCs=4", "--watchdog=100", "--watchdog-exception-ok")

function foo() {
  let { ...r } = { xx:0 };
  foo();
}
foo();

How is that recursion supposed to end? Anyway, on these architectures it doesn't, the error is:

stress/copy-data-properties-fast-path.js.default: Exception: RangeError: Maximum call stack size exceeded.
stress/copy-data-properties-fast-path.js.default: foo@copy-data-properties-fast-path.js:5:6
stress/copy-data-properties-fast-path.js.default: foo@copy-data-properties-fast-path.js:5:6
stress/copy-data-properties-fast-path.js.default: foo@copy-data-properties-fast-path.js:5:6
stress/copy-data-properties-fast-path.js.default: foo@copy-data-properties-fast-path.js:5:6
stress/copy-data-properties-fast-path.js.default: foo@copy-data-properties-fast-path.js:5:6
stress/copy-data-properties-fast-path.js.default: foo@copy-data-properties-fast-path.js:5:6
stress/copy-data-properties-fast-path.js.default: foo@copy-data-properties-fast-path.js:5:6
stress/copy-data-properties-fast-path.js.default: foo@copy-data-properties-fast-path.js:5:6
stress/copy-data-properties-fast-path.js.default: foo@copy-data-properties-fast-path.js:5:6
stress/copy-data-properties-fast-path.js.default: foo@copy-data-properties-fast-path.js:5:6
stress/copy-data-properties-fast-path.js.default: foo@copy-data-properties-fast-path.js:5:6
stress/copy-data-properties-fast-path.js.default: foo@copy-data-properties-fast-path.js:5:6
stress/copy-data-properties-fast-path.js.default: foo@copy-data-properties-fast-path.js:5:6
stress/copy-data-properties-fast-path.js.default: foo@copy-data-properties-fast-path.js:5:6
stress/copy-data-properties-fast-path.js.default: foo@copy-data-properties-fast-path.js:5:6
stress/copy-data-properties-fast-path.js.default: foo@copy-data-properties-fast-path.js:5:6
stress/copy-data-properties-fast-path.js.default: foo@copy-data-properties-fast-path.js:5:6
stress/copy-data-properties-fast-path.js.default: foo@copy-data-properties-fast-path.js:5:6
stress/copy-data-properties-fast-path.js.default: foo@copy-data-properties-fast-path.js:5:6
stress/copy-data-properties-fast-path.js.default: foo@copy-data-properties-fast-path.js:5:6
stress/copy-data-properties-fast-path.js.default: foo@copy-data-properties-fast-path.js:5:6
stress/copy-data-properties-fast-path.js.default: foo@copy-data-properties-fast-path.js:5:6
stress/copy-data-properties-fast-path.js.default: foo@copy-data-properties-fast-path.js:5:6
stress/copy-data-properties-fast-path.js.default: foo@copy-data-properties-fast-path.js:5:6
stress/copy-data-properties-fast-path.js.default: foo@copy-data-properties-fast-path.js:5:6
stress/copy-data-properties-fast-path.js.default: foo@copy-data-properties-fast-path.js:5:6
stress/copy-data-properties-fast-path.js.default: foo@copy-data-properties-fast-path.js:5:6
stress/copy-data-properties-fast-path.js.default: foo@copy-data-properties-fast-path.js:5:6
stress/copy-data-properties-fast-path.js.default: foo@copy-data-properties-fast-path.js:5:6
stress/copy-data-properties-fast-path.js.default: foo@copy-data-properties-fast-path.js:5:6
stress/copy-data-properties-fast-path.js.default: foo@copy-data-properties-fast-path.js:5:6
stress/copy-data-properties-fast-path.js.default: foo@copy-data-properties-fast-path.js:5:6
stress/copy-data-properties-fast-path.js.default: foo@copy-data-properties-fast-path.js:5:6
stress/copy-data-properties-fast-path.js.default: foo@copy-data-properties-fast-path.js:5:6
stress/copy-data-properties-fast-path.js.default: foo@copy-data-properties-fast-path.js:5:6
stress/copy-data-properties-fast-path.js.default: foo@copy-data-properties-fast-path.js:5:6
stress/copy-data-properties-fast-path.js.default: foo@copy-data-properties-fast-path.js:5:6
stress/copy-data-properties-fast-path.js.default: foo@copy-data-properties-fast-path.js:5:6
stress/copy-data-properties-fast-path.js.default: foo@copy-data-properties-fast-path.js:5:6
stress/copy-data-properties-fast-path.js.default: foo@copy-data-properties-fast-path.js:5:6
stress/copy-data-properties-fast-path.js.default: foo@copy-data-properties-fast-path.js:5:6
stress/copy-data-properties-fast-path.js.default: foo@copy-data-properties-fast-path.js:5:6
stress/copy-data-properties-fast-path.js.default: foo@copy-data-properties-fast-path.js:5:6
stress/copy-data-properties-fast-path.js.default: foo@copy-data-properties-fast-path.js:5:6
stress/copy-data-properties-fast-path.js.default: foo@copy-data-properties-fast-path.js:5:6
stress/copy-data-properties-fast-path.js.default: foo@copy-data-properties-fast-path.js:5:6
stress/copy-data-properties-fast-path.js.default: foo@copy-data-properties-fast-path.js:5:6
stress/copy-data-properties-fast-path.js.default: foo@copy-data-properties-fast-path.js:5:6
stress/copy-data-properties-fast-path.js.default: foo@copy-data-properties-fast-path.js:5:6
stress/copy-data-properties-fast-path.js.default: foo@copy-data-properties-fast-path.js:5:6
stress/copy-data-properties-fast-path.js.default: foo@copy-data-properties-fast-path.js:5:6
stress/copy-data-properties-fast-path.js.default: foo@copy-data-properties-fast-path.js:5:6
stress/copy-data-properties-fast-path.js.default: foo@copy-data-properties-fast-path.js:5:6
stress/copy-data-properties-fast-path.js.default: foo@copy-data-properties-fast-path.js:5:6
stress/copy-data-properties-fast-path.js.default: foo@copy-data-properties-fast-path.js:5:6
stress/copy-data-properties-fast-path.js.default: foo@copy-data-properties-fast-path.js:5:6
stress/copy-data-properties-fast-path.js.default: foo@copy-data-properties-fast-path.js:5:6
stress/copy-data-properties-fast-path.js.default: foo@copy-data-properties-fast-path.js:5:6
stress/copy-data-properties-fast-path.js.default: foo@copy-data-properties-fast-path.js:5:6
stress/copy-data-properties-fast-path.js.default: foo@copy-data-properties-fast-path.js:5:6
stress/copy-data-properties-fast-path.js.default: foo@copy-data-properties-fast-path.js:5:6
stress/copy-data-properties-fast-path.js.default: foo@copy-data-properties-fast-path.js:5:6
stress/copy-data-properties-fast-path.js.default: foo@copy-data-properties-fast-path.js:5:6
stress/copy-data-properties-fast-path.js.default: foo@copy-data-properties-fast-path.js:5:6
stress/copy-data-properties-fast-path.js.default: foo@copy-data-properties-fast-path.js:5:6
stress/copy-data-properties-fast-path.js.default: foo@copy-data-properties-fast-path.js:5:6
stress/copy-data-properties-fast-path.js.default: foo@copy-data-properties-fast-path.js:5:6
stress/copy-data-properties-fast-path.js.default: foo@copy-data-properties-fast-path.js:5:6
stress/copy-data-properties-fast-path.js.default: foo@copy-data-properties-fast-path.js:5:6
stress/copy-data-properties-fast-path.js.default: foo@copy-data-properties-fast-path.js:5:6
stress/copy-data-properties-fast-path.js.default: foo@copy-data-properties-fast-path.js:5:6
stress/copy-data-properties-fast-path.js.default: foo@copy-data-properties-fast-path.js:5:6
stress/copy-data-properties-fast-path.js.default: foo@copy-data-properties-fast-path.js:5:6
stress/copy-data-properties-fast-path.js.default: foo@copy-data-properties-fast-path.js:5:6
stress/copy-data-properties-fast-path.js.default: foo@copy-data-properties-fast-path.js:5:6
stress/copy-data-properties-fast-path.js.default: foo@copy-data-properties-fast-path.js:5:6
stress/copy-data-properties-fast-path.js.default: foo@copy-data-properties-fast-path.js:5:6
stress/copy-data-properties-fast-path.js.default: foo@copy-data-properties-fast-path.js:5:6
stress/copy-data-properties-fast-path.js.default: foo@copy-data-properties-fast-path.js:5:6
stress/copy-data-properties-fast-path.js.default: foo@copy-data-properties-fast-path.js:5:6
stress/copy-data-properties-fast-path.js.default: foo@copy-data-properties-fast-path.js:5:6
stress/copy-data-properties-fast-path.js.default: foo@copy-data-properties-fast-path.js:5:6
stress/copy-data-properties-fast-path.js.default: foo@copy-data-properties-fast-path.js:5:6
stress/copy-data-properties-fast-path.js.default: foo@copy-data-properties-fast-path.js:5:6
stress/copy-data-properties-fast-path.js.default: foo@copy-data-properties-fast-path.js:5:6
stress/copy-data-properties-fast-path.js.default: foo@copy-data-properties-fast-path.js:5:6
stress/copy-data-properties-fast-path.js.default: foo@copy-data-properties-fast-path.js:5:6
stress/copy-data-properties-fast-path.js.default: foo@copy-data-properties-fast-path.js:5:6
stress/copy-data-properties-fast-path.js.default: foo@copy-data-properties-fast-path.js:5:6
stress/copy-data-properties-fast-path.js.default: foo@copy-data-properties-fast-path.js:5:6
stress/copy-data-properties-fast-path.js.default: foo@copy-data-properties-fast-path.js:5:6
stress/copy-data-properties-fast-path.js.default: foo@copy-data-properties-fast-path.js:5:6
stress/copy-data-properties-fast-path.js.default: foo@copy-data-properties-fast-path.js:5:6
stress/copy-data-properties-fast-path.js.default: foo@copy-data-properties-fast-path.js:5:6
stress/copy-data-properties-fast-path.js.default: foo@copy-data-properties-fast-path.js:5:6
stress/copy-data-properties-fast-path.js.default: foo@copy-data-properties-fast-path.js:5:6
stress/copy-data-properties-fast-path.js.default: foo@copy-data-properties-fast-path.js:5:6
stress/copy-data-properties-fast-path.js.default: foo@copy-data-properties-fast-path.js:5:6
stress/copy-data-properties-fast-path.js.default: foo@copy-data-properties-fast-path.js:5:6
stress/copy-data-properties-fast-path.js.default: foo@copy-data-properties-fast-path.js:5:6
stress/copy-data-properties-fast-path.js.default: ERROR: Unexpected exit code: 3
FAIL: stress/copy-data-properties-fast-path.js.default
Comment 1 Michael Catanzaro 2021-02-11 07:36:29 PST
Created attachment 419987 [details]
Patch
Comment 2 Saam Barati 2021-02-11 12:08:56 PST
Comment on attachment 419987 [details]
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=419987&action=review

> JSTests/ChangeLog:8
> +        Skip the test on these architectures. I don't know what else to do with it.

how are they failing? Maybe worth a bug to figure it out on your end?
Comment 3 Michael Catanzaro 2021-02-11 16:15:55 PST
(In reply to Saam Barati from comment #2)
> Comment on attachment 419987 [details]
> Patch
> 
> View in context:
> https://bugs.webkit.org/attachment.cgi?id=419987&action=review
> 
> > JSTests/ChangeLog:8
> > +        Skip the test on these architectures. I don't know what else to do with it.
> 
> how are they failing?

The failure is in comment #0: the test just keeps recursing forever.

> Maybe worth a bug to figure it out on your end?

Well, I think this is that bug? :P I don't think we'll figure it out without guidance from JSC developers. The best I can do is usually a bisect, but in this case it's a new test so there's nothing to bisect. I'm happy to try checking code changes on the affected machines if that would be helpful, but I wouldn't know where to start.
Comment 4 EWS 2021-02-13 10:19:06 PST
Committed r272833: <https://commits.webkit.org/r272833>

All reviewed patches have been landed. Closing bug and clearing flags on attachment 419987 [details].
Comment 5 Radar WebKit Bug Importer 2021-02-13 10:20:18 PST
<rdar://problem/74311603>
Comment 6 Michael Catanzaro 2021-02-13 13:15:25 PST
...
Comment 7 Yusuke Suzuki 2021-02-13 13:24:38 PST
Ah! I landed the fix in https://bugs.webkit.org/show_bug.cgi?id=221668#c8 when working on https://bugs.webkit.org/show_bug.cgi?id=221668 :)
Comment 8 Michael Catanzaro 2021-02-13 15:39:40 PST
Ah... so I should unskip the test, then?
Comment 9 Michael Catanzaro 2021-02-14 10:18:18 PST
Let's try that.
Comment 10 Michael Catanzaro 2021-02-14 10:20:32 PST
Created attachment 420241 [details]
Patch for landing
Comment 11 EWS 2021-02-14 11:06:13 PST
Committed r272840: <https://commits.webkit.org/r272840>

All reviewed patches have been landed. Closing bug and clearing flags on attachment 420241 [details].