RESOLVED FIXED 211724
stress/array-buffer-view-watchpoint-can-be-fired-in-really-add-in-dfg.js failing on ppc64le and s390x
https://bugs.webkit.org/show_bug.cgi?id=211724
Summary stress/array-buffer-view-watchpoint-can-be-fired-in-really-add-in-dfg.js fail...
Michael Catanzaro
Reported 2020-05-11 07:11:39 PDT
stress/array-buffer-view-watchpoint-can-be-fired-in-really-add-in-dfg.js is failing on ppc64le and s390x. Note these architectures don't support llint or JIT, they only use cloop. As far as I can tell, the stress tests don't output *anything* when they fail, so that means all I know is "it fails." After fixing bug #210685, all other JSC stress tests are passing on both architectures except for this one. In order to skip the tests, Tomas discovered that we need to modify determineArchitectureFromELFBinary() in run-jsc-stress-tests to read the architecture out of the ELF file....
Attachments
Patch (2.65 KB, patch)
2020-05-12 09:49 PDT, Michael Catanzaro
no flags
Patch (3.48 KB, patch)
2020-05-15 08:53 PDT, Michael Catanzaro
no flags
Patch (3.71 KB, patch)
2020-05-15 11:05 PDT, Michael Catanzaro
no flags
Patch for landing (3.77 KB, patch)
2020-05-19 08:36 PDT, Michael Catanzaro
no flags
Patch for landing (3.77 KB, patch)
2020-05-19 08:41 PDT, Michael Catanzaro
no flags
Michael Catanzaro
Comment 1 2020-05-11 15:12:41 PDT
This turned into quite an adventure. Eventually I tracked down the source code for the file command. I'm attaching here the magic file it uses to determine CPU architecture. It's not easy to read, but it matches our implementation of determineArchitectureFromELFBinary. Looks like the magic number for 64-bit PowerPC is 21 (regardless of endianness), and the magic number for all variants of S/390 is 22. So we could blindly add them to determineArchitectureFromELFBinary and see whether or not it works....
Michael Catanzaro
Comment 2 2020-05-11 15:14:31 PDT
But tbh, since the test is failing on armv7 as well, the past of least-resistance would be to skip unconditionally until it can be fixed. Ideally someone with more knowledge of JSC would decide how to handle it... all I can do is make it skippable.
Michael Catanzaro
Comment 3 2020-05-12 09:48:01 PDT
I also found bug #210641. Maybe it would make sense to use fewer iterations on all architectures? If that's not enough to enter dfg, then maybe this should be an x86_64-only test...? Anyway, here's my attempt to skip the test on ppc64le and s390x. We won't know if it works until after it lands.
Michael Catanzaro
Comment 4 2020-05-12 09:49:08 PDT
Michael Catanzaro
Comment 5 2020-05-14 06:41:25 PDT
OK, since I see no other comments or suggestions, let's land this? Ping reviewers.
EWS
Comment 6 2020-05-14 07:34:50 PDT
Committed r261689: <https://trac.webkit.org/changeset/261689> All reviewed patches have been landed. Closing bug and clearing flags on attachment 399137 [details].
Radar WebKit Bug Importer
Comment 7 2020-05-14 07:35:22 PDT
Michael Catanzaro
Comment 8 2020-05-14 08:09:05 PDT
Thanks!
Michael Catanzaro
Comment 9 2020-05-15 05:41:23 PDT
It fixed ppc64le, but not s390x, the determineArchitectureFromELFBinary change doesn't work there.
Michael Catanzaro
Comment 10 2020-05-15 07:15:20 PDT
(In reply to Michael Catanzaro from comment #9) > It fixed ppc64le, but not s390x, the determineArchitectureFromELFBinary > change doesn't work there. Looking at an actual s390x binary, I got the right number (22, so 0x16) but the script fails to properly check the endianness of the binary. It's expecting 0x16 0x00 but big endian is 0x00 0x16.
Michael Catanzaro
Comment 11 2020-05-15 08:53:05 PDT
Michael Catanzaro
Comment 12 2020-05-15 11:05:53 PDT
Michael Catanzaro
Comment 13 2020-05-19 06:52:32 PDT
Ping reviewers ;)
Carlos Alberto Lopez Perez
Comment 14 2020-05-19 07:55:23 PDT
Comment on attachment 399496 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=399496&action=review > Tools/Scripts/run-jsc-stress-tests:383 > + # MIPS and PowerPC may are bi-endian. S390 (which includes S390x) is big endian. The rest are little endian. Please fix this comment.: - # MIPS and PowerPC may are bi-endian. S390 (which includes S390x) is big endian. The rest are little endian. + # MIPS and PowerPC may be little-endian or big-endian. S390 (which includes S390x) is big-endian. The rest are little-endian. MIPS can be little-endian or can be also big-endian. The MIPS architecture variant we target our CI its MIPS32le (le stands for little-endian).
Michael Catanzaro
Comment 15 2020-05-19 08:29:56 PDT
I meant "bi-" as in "both," but I see I have a typo there anyway, and your wording is more clear, so sure.
Michael Catanzaro
Comment 16 2020-05-19 08:36:53 PDT
Created attachment 399737 [details] Patch for landing
Michael Catanzaro
Comment 17 2020-05-19 08:41:10 PDT
Comment on attachment 399737 [details] Patch for landing Another typo :S
Michael Catanzaro
Comment 18 2020-05-19 08:41:35 PDT
Created attachment 399738 [details] Patch for landing
EWS
Comment 19 2020-05-19 09:08:12 PDT
Committed r261862: <https://trac.webkit.org/changeset/261862> All reviewed patches have been landed. Closing bug and clearing flags on attachment 399738 [details].
Note You need to log in before you can comment on or make changes to this bug.