RESOLVED FIXED 148376
New tests introduced in r188545 fail on 32 bit ARM
https://bugs.webkit.org/show_bug.cgi?id=148376
Summary New tests introduced in r188545 fail on 32 bit ARM
Csaba Osztrogonác
Reported 2015-08-24 03:52:36 PDT
12 different tests fail on ARM Linux (only 32 bit) which introduced in https://trac.webkit.org/changeset/188545 Maybe they fail on iOS devices too, but there isn't any public iOS tester buildbot. - EFL ARM Thumb2: https://build.webkit.org/builders/EFL%20Linux%20ARMv7%20Thumb2%20Release/builds/14915 - EFL ARM Traditional: https://build.webkit.org/builders/EFL%20Linux%20ARMv7%20Traditional%20Release/builds/14755 - GTK ARM (???): https://build.webkit.org/builders/GTK%20Linux%20ARM%20Release/builds/8297 I won't have time to investigate this bug in the near future, feel free to pick it up if somebody is interested in it.
Attachments
Patch (8.75 KB, patch)
2015-09-18 15:56 PDT, GSkachkov
no flags
Patch (8.75 KB, patch)
2015-09-18 16:06 PDT, GSkachkov
no flags
Patch (8.73 KB, patch)
2015-09-19 07:35 PDT, GSkachkov
no flags
arm_tests_speccell.log (2.75 MB, application/octet-stream)
2015-09-21 13:00 PDT, GSkachkov
no flags
GSkachkov
Comment 1 2015-08-24 05:58:18 PDT
Csaba Osztrogonác I'll try to reproduce on iOS.
Csaba Osztrogonác
Comment 2 2015-08-27 03:26:02 PDT
(In reply to comment #1) > Csaba Osztrogonác I'll try to reproduce on iOS. Have you managed to reproduce this bug on iOS too or is it a Linux only issue?
GSkachkov
Comment 3 2015-08-27 03:57:05 PDT
(In reply to comment #2) > (In reply to comment #1) > > Csaba Osztrogonác I'll try to reproduce on iOS. > > Have you managed to reproduce this bug on iOS too or is it a Linux only > issue? I've not managed to reproduce on my default ios simulator but it is 64 bit, I still can't run test for ios 32 bit. Is it possibe to build and run test for Linux ARM on MacOS for instance with using VM with Ubuntu?
Csaba Osztrogonác
Comment 4 2015-08-27 04:09:28 PDT
(In reply to comment #3) > (In reply to comment #2) > > (In reply to comment #1) > > > Csaba Osztrogonác I'll try to reproduce on iOS. > > > > Have you managed to reproduce this bug on iOS too or is it a Linux only > > issue? > > I've not managed to reproduce on my default ios simulator but it is 64 bit, > I still can't run test for ios 32 bit. Is it possibe to build and run test > for Linux ARM on MacOS for instance with using VM with Ubuntu? I don't think so if it is possible to run tests in VM, only on real ARM hardware. I'll create a debug build and try to provide a detailed gdb backtrace about these crashes sometime in the next week.
Csaba Osztrogonác
Comment 5 2015-08-27 06:07:12 PDT
Here is a crash log in debug mode: stress/arrowfunction-bound.js.default: ASSERTION FAILED: !from || from->JSCell::inherits(std::remove_pointer<To>::type::info()) stress/arrowfunction-bound.js.default: ../../Source/JavaScriptCore/runtime/JSCell.h(250) : To JSC::jsCast(From*) [with To = JSC::JSObject*; From = JSC::JSCell] stress/arrowfunction-bound.js.default: 1 0xb65960e4 WTFCrashWithSecurityImplication stress/arrowfunction-bound.js.default: 2 0x41134 JSC::JSObject* JSC::jsCast<JSC::JSObject*, JSC::JSCell>(JSC::JSCell*) stress/arrowfunction-bound.js.default: 3 0x3bade JSC::asObject(JSC::JSCell*) stress/arrowfunction-bound.js.default: 4 0x3de14 JSC::JSValue::getPropertySlot(JSC::ExecState*, JSC::PropertyName, JSC::PropertySlot&) const stress/arrowfunction-bound.js.default: 5 0xb62ffbb2 stress/arrowfunction-bound.js.default: Segmentation fault stress/arrowfunction-bound.js.default: ERROR: Unexpected exit code: 139 FAIL: stress/arrowfunction-bound.js.default
Csaba Osztrogonác
Comment 6 2015-08-27 06:09:30 PDT
Unfortunately I can't provide GDB backtrace, because GDB segfaults :(
Csaba Osztrogonác
Comment 7 2015-08-27 06:12:14 PDT
It should be a bug somewhere in the JIT engine, because this test passes with --useJIT=false command line option.
GSkachkov
Comment 8 2015-08-28 02:02:12 PDT
(In reply to comment #7) > It should be a bug somewhere in the JIT engine, because > this test passes with --useJIT=false command line option. I've run safari on ios-simulator with 32 bit and but didn't manage reproduce issue when I was runnig test manually. I'll take a look closer to my fixes that related to the JIT this weekend, possible I'll provide list of suspicious changes. That sad I can't reproduce issue on my env. Is there any way to use env(building bot) where you found this issue by me for checking my local changes there, for instance for 1 week period?
GSkachkov
Comment 9 2015-08-31 23:53:56 PDT
(In reply to comment #4) > (In reply to comment #3) > > (In reply to comment #2) > > > (In reply to comment #1) > > > > Csaba Osztrogonác I'll try to reproduce on iOS. > > > > > > Have you managed to reproduce this bug on iOS too or is it a Linux only > > > issue? > > > > I've not managed to reproduce on my default ios simulator but it is 64 bit, > > I still can't run test for ios 32 bit. Is it possibe to build and run test > > for Linux ARM on MacOS for instance with using VM with Ubuntu? > > I don't think so if it is possible to run > tests in VM, only on real ARM hardware. I've up & run Debian for ARM(A9) with using qEMU. Now I'm building Webkit GKT+ on Ubuntu VM. I hope that soon I'll manage to reproduce the issue. > I'll create a debug build and try to provide a detailed gdb > backtrace about these crashes sometime in the next week.
GSkachkov
Comment 10 2015-09-15 00:56:25 PDT
(In reply to comment #9) > (In reply to comment #4) > > (In reply to comment #3) > > > (In reply to comment #2) > > > > (In reply to comment #1) > > > > > Csaba Osztrogonác I'll try to reproduce on iOS. > > > > > > > > Have you managed to reproduce this bug on iOS too or is it a Linux only > > > > issue? > > > > > > I've not managed to reproduce on my default ios simulator but it is 64 bit, > > > I still can't run test for ios 32 bit. Is it possibe to build and run test > > > for Linux ARM on MacOS for instance with using VM with Ubuntu? > > > > I don't think so if it is possible to run > > tests in VM, only on real ARM hardware. > I've up & run Debian for ARM(A9) with using qEMU. Now I'm building Webkit > GKT+ on Ubuntu VM. I hope that soon I'll manage to reproduce the issue. > > > I'll create a debug build and try to provide a detailed gdb > > backtrace about these crashes sometime in the next week. Ohh, you was right, qEMU unbearable slow, so I've bought used Samsung Chromebook with ARM. Now I'm in process of building jsc, hope soon will run the test and manage to reproduce the issue.
GSkachkov
Comment 11 2015-09-18 15:56:18 PDT
GSkachkov
Comment 12 2015-09-18 15:59:49 PDT
I've managed to fix tests on my GTK ARM.
GSkachkov
Comment 13 2015-09-18 16:06:49 PDT
Saam Barati
Comment 14 2015-09-18 17:52:26 PDT
Comment on attachment 261538 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=261538&action=review r=me with some nits. > Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:4641 > +#if !USE(JSVALUE32_64) nit: make this "USE(JSVALUE64)" > Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:4652 > +#if !USE(JSVALUE32_64) nit: make this "USE(JSVALUE64)" > Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:4671 > +#if !USE(JSVALUE32_64) ditto > Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:4705 > +#if !USE(JSVALUE32_64) ditto > Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:4709 > + m_jit.storePtr(thisValueTagGPR, MacroAssembler::Address(resultGPR, JSArrowFunction::offsetOfThisValue() + TagOffset)); nit: I would also make this store32.
GSkachkov
Comment 15 2015-09-19 07:35:06 PDT
Created attachment 261574 [details] Patch Fix review comments
Saam Barati
Comment 16 2015-09-20 21:07:01 PDT
Comment on attachment 261574 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=261574&action=review > Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:4660 > + DFG_TYPE_CHECK(thisValue.jsValueRegs(), node->child2(), SpecCell, m_jit.branchIfNotCell(thisValue.jsValueRegs())); When would this ever not be a cell?
GSkachkov
Comment 17 2015-09-21 00:12:02 PDT
Comment on attachment 261574 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=261574&action=review >> Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:4660 >> + DFG_TYPE_CHECK(thisValue.jsValueRegs(), node->child2(), SpecCell, m_jit.branchIfNotCell(thisValue.jsValueRegs())); > > When would this ever not be a cell? At start child2 type is SpeculatedType SpecHeapTop = 0x3bbfffff -> after this line it converts to SpeculatedType SpecCell = 0x000fffff Without this line this code raise ASSERT error in following module https://github.com/WebKit/webkit/blob/master/Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h#L120 and it says that it expect Cell but there was Top. In JSVALUE64 branch this type check is done by following statement SpeculateCellOperand thisValue(this, node->child2()); (4653)
Saam Barati
Comment 18 2015-09-21 10:55:43 PDT
(In reply to comment #17) > Comment on attachment 261574 [details] > Patch > > View in context: > https://bugs.webkit.org/attachment.cgi?id=261574&action=review > > >> Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:4660 > >> + DFG_TYPE_CHECK(thisValue.jsValueRegs(), node->child2(), SpecCell, m_jit.branchIfNotCell(thisValue.jsValueRegs())); > > > > When would this ever not be a cell? > > At start child2 type is SpeculatedType SpecHeapTop = 0x3bbfffff -> after > this line it converts to SpeculatedType SpecCell = 0x000fffff > Without this line this code raise ASSERT error in following module > https://github.com/WebKit/webkit/blob/master/Source/JavaScriptCore/dfg/ > DFGAbstractInterpreterInlines.h#L120 > and it says that it expect Cell but there was Top. > In JSVALUE64 branch this type check is done by following statement > SpeculateCellOperand thisValue(this, node->child2()); (4653) Oh, right. The "this" value could be the empty value.
WebKit Commit Bot
Comment 19 2015-09-21 11:59:53 PDT
Comment on attachment 261574 [details] Patch Clearing flags on attachment: 261574 Committed r190063: <http://trac.webkit.org/changeset/190063>
WebKit Commit Bot
Comment 20 2015-09-21 11:59:57 PDT
All reviewed patches have been landed. Closing bug.
GSkachkov
Comment 21 2015-09-21 13:00:18 PDT
Created attachment 261678 [details] arm_tests_speccell.log Log of tests with failed assert
Csaba Osztrogonác
Comment 22 2016-02-11 03:00:05 PST
(In reply to comment #19) > Comment on attachment 261574 [details] > Patch > > Clearing flags on attachment: 261574 > > Committed r190063: <http://trac.webkit.org/changeset/190063> How and why could CQ set the svn:executable property of soource files? trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp Property svn:executable set to * trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT.h Property svn:executable set to * trunk/Source/JavaScriptCore/jit/JIT.h Property svn:executable set to * trunk/Source/JavaScriptCore/jit/JITInlines.h Property svn:executable set to * trunk/Source/JavaScriptCore/jit/JITOpcodes.cpp Property svn:executable set to *
Csaba Osztrogonác
Comment 23 2016-02-11 03:53:24 PST
GSkachkov
Comment 24 2016-02-11 11:29:22 PST
It is weird, only one difference with another patches, I modified files on Laptop with ChromeOS to check on ARM.
Alexey Proskuryakov
Comment 25 2016-02-11 13:53:08 PST
> How and why could CQ set the svn:executable property of soource files? The patch had that in: +old mode 100644 +new mode 100755
Note You need to log in before you can comment on or make changes to this bug.