Bug 148273 - Skip no-llint tests that fail due to running out of executable memory after r188969
Summary: Skip no-llint tests that fail due to running out of executable memory after r...
Status: RESOLVED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: JavaScriptCore (show other bugs)
Version: Other
Hardware: Unspecified Unspecified
: P2 Normal
Assignee: Yusuke Suzuki
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2015-08-20 17:50 PDT by Michael Saboff
Modified: 2015-08-21 12:33 PDT (History)
4 users (show)

See Also:


Attachments
Patch (8.65 KB, patch)
2015-08-20 19:24 PDT, Yusuke Suzuki
no flags Details | Formatted Diff | Diff
Patch (9.13 KB, patch)
2015-08-20 20:04 PDT, Yusuke Suzuki
no flags Details | Formatted Diff | Diff
Patch (9.88 KB, patch)
2015-08-20 22:14 PDT, Yusuke Suzuki
no flags Details | Formatted Diff | Diff
Patch (9.63 KB, patch)
2015-08-21 11:21 PDT, Yusuke Suzuki
msaboff: review+
Details | Formatted Diff | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Michael Saboff 2015-08-20 17:50:55 PDT
Beginning with http://trac.webkit.org/changeset/188696, the tests below started to fail on 32bit iOS devices due to running out of executable memory.  The "no-llint" versions of these tests should be skipped for 32bit iOS.

    jsc-layout-tests.yaml/js/script-tests/dfg-float32array.js.layout-no-llint
    jsc-layout-tests.yaml/js/script-tests/dfg-int16array.js.layout-no-llint
    jsc-layout-tests.yaml/js/script-tests/dfg-int32array-overflow-values.js.layout-no-llint
    jsc-layout-tests.yaml/js/script-tests/dfg-int32array.js.layout-no-llint
    jsc-layout-tests.yaml/js/script-tests/dfg-int8array.js.layout-no-llint
    jsc-layout-tests.yaml/js/script-tests/dfg-uint16array.js.layout-no-llint
    jsc-layout-tests.yaml/js/script-tests/dfg-uint32array-overflow-values.js.layout-no-llint
    jsc-layout-tests.yaml/js/script-tests/dfg-uint32array.js.layout-no-llint
    jsc-layout-tests.yaml/js/script-tests/dfg-uint8array.js.layout-no-llint
    jsc-layout-tests.yaml/js/script-tests/dfg-uint8clampedarray.js.layout-no-llint
    jsc-layout-tests.yaml/js/script-tests/regress-141098.js.layout-no-llint

Here is the traceback of one of the test:
[2015-08-20 15:42:00] INFO: jsc-layout-tests.yaml/js/script-tests/dfg-float32array.js.layout-no-llint: Ran out of executable memory while allocating 1484 bytes.
[2015-08-20 15:42:00] INFO: jsc-layout-tests.yaml/js/script-tests/dfg-float32array.js.layout-no-llint: 1   0x433c4f JSC::LinkBuffer::allocate(unsigned long, void*, JSC::JITCompilationEffort)
[2015-08-20 15:42:00] INFO: jsc-layout-tests.yaml/js/script-tests/dfg-float32array.js.layout-no-llint: 2   0x433cdd void JSC::LinkBuffer::copyCompactAndLinkCode<unsigned short>(JSC::MacroAssembler&, void*, JSC::JITCompilationEffort)
[2015-08-20 15:42:00] INFO: jsc-layout-tests.yaml/js/script-tests/dfg-float32array.js.layout-no-llint: 3   0x35df49 JSC::JIT::privateCompile(JSC::JITCompilationEffort)
[2015-08-20 15:42:00] INFO: jsc-layout-tests.yaml/js/script-tests/dfg-float32array.js.layout-no-llint: 4   0x2fc531 JSC::ScriptExecutable::prepareForExecutionImpl(JSC::ExecState*, JSC::JSFunction*, JSC::JSScope*, JSC::CodeSpecializationKind)
[2015-08-20 15:42:00] INFO: jsc-layout-tests.yaml/js/script-tests/dfg-float32array.js.layout-no-llint: 5   0x3560cd JSC::Interpreter::execute(JSC::EvalExecutable*, JSC::ExecState*, JSC::JSValue, JSC::JSScope*)
[2015-08-20 15:42:00] INFO: jsc-layout-tests.yaml/js/script-tests/dfg-float32array.js.layout-no-llint: 6   0x355f63 JSC::eval(JSC::ExecState*)
[2015-08-20 15:42:00] INFO: jsc-layout-tests.yaml/js/script-tests/dfg-float32array.js.layout-no-llint: 7   0x37cfaf operationCallEval
[2015-08-20 15:42:00] INFO: jsc-layout-tests.yaml/js/script-tests/dfg-float32array.js.layout-no-llint: 8   0x7c45495
[2015-08-20 15:42:00] INFO: jsc-layout-tests.yaml/js/script-tests/dfg-float32array.js.layout-no-llint: 9   0x7c3fb99
[2015-08-20 15:42:00] INFO: jsc-layout-tests.yaml/js/script-tests/dfg-float32array.js.layout-no-llint: 10  0x4490d1 vmEntryToJavaScript
[2015-08-20 15:42:00] INFO: jsc-layout-tests.yaml/js/script-tests/dfg-float32array.js.layout-no-llint: 11  0x36af0b JSC::JITCode::execute(JSC::VM*, JSC::ProtoCallFrame*)
[2015-08-20 15:42:00] INFO: jsc-layout-tests.yaml/js/script-tests/dfg-float32array.js.layout-no-llint: 12  0x358c31 JSC::Interpreter::execute(JSC::ProgramExecutable*, JSC::ExecState*, JSC::JSObject*)
[2015-08-20 15:42:00] INFO: jsc-layout-tests.yaml/js/script-tests/dfg-float32array.js.layout-no-llint: 13  0x1fda8f JSC::evaluate(JSC::ExecState*, JSC::SourceCode const&, JSC::JSValue, WTF::NakedPtr<JSC::Exception>&)
[2015-08-20 15:42:00] INFO: jsc-layout-tests.yaml/js/script-tests/dfg-float32array.js.layout-no-llint: 14  0x795f1 jscmain(int, char**)
[2015-08-20 15:42:00] INFO: jsc-layout-tests.yaml/js/script-tests/dfg-float32array.js.layout-no-llint: 15  0x7910b main
[2015-08-20 15:42:00] INFO: jsc-layout-tests.yaml/js/script-tests/dfg-float32array.js.layout-no-llint: 16  0x34191873 <redacted>
[2015-08-20 15:42:00] INFO: jsc-layout-tests.yaml/js/script-tests/dfg-float32array.js.layout-no-llint: ./test_script_855: line 2: 13988 Segmentation fault: 11  "$@" /System/Library/Frameworks/JavaScriptCore.framework/Resources/jsc --useFTLJIT\=false --enableFunctionDotArguments\=true --useLLInt\=false resources/standalone-pre.js dfg-float32array.js resources/standalone-post.js
[2015-08-20 15:42:00] INFO: jsc-layout-tests.yaml/js/script-tests/dfg-float32array.js.layout-no-llint: ERROR: Unexpected exit code: 139
Comment 1 Yusuke Suzuki 2015-08-20 19:24:24 PDT
Created attachment 259564 [details]
Patch
Comment 2 Yusuke Suzuki 2015-08-20 19:26:15 PDT
Oops, i need to ios32 restriction.
Comment 3 Yusuke Suzuki 2015-08-20 20:04:54 PDT
Created attachment 259572 [details]
Patch
Comment 4 Michael Saboff 2015-08-20 20:38:12 PDT
Comment on attachment 259572 [details]
Patch

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

Thanks for addressing this quickly.  Basically looks good.
I suggested some changes to one ChangeLog entry.
Do change the "if" clause for every test to include 'and $hostOS == "darwin"'

> LayoutTests/ChangeLog:11
> +        It consumes much memory and when no-llint, some tests failed due to "ran out of executable memory".
> +        This patch temporary skips failing tests. Since the size of the fixed allocator is defined by the architecture,
> +        the failure will be caused when the architecture is ARM. this patch applies the configuration when the architecture is ARM.

I think it sounds better if you say something like:
That change increases JIT memory usage.  This is causing the "no-llint" variation of some tests to fail due to "ran out of executable memory".
Since the size of the fixed allocator is defined by the architecture and the tests are only failing on iOS ARM devices, skip those tests.

> LayoutTests/js/script-tests/dfg-float32array.js:3
> +//@ noNoLLIntRunLayoutTest if $architecture == "arm"

Since the failures have only been reported on iOS, change this to 'if $architecture == "arm" and $hostOS == "darwin"'
Comment 5 Yusuke Suzuki 2015-08-20 20:42:10 PDT
Comment on attachment 259572 [details]
Patch

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

Thank you for your review!

>> LayoutTests/ChangeLog:11
>> +        the failure will be caused when the architecture is ARM. this patch applies the configuration when the architecture is ARM.
> 
> I think it sounds better if you say something like:
> That change increases JIT memory usage.  This is causing the "no-llint" variation of some tests to fail due to "ran out of executable memory".
> Since the size of the fixed allocator is defined by the architecture and the tests are only failing on iOS ARM devices, skip those tests.

Sounds nice! I'll fix the description soon.

>> LayoutTests/js/script-tests/dfg-float32array.js:3
>> +//@ noNoLLIntRunLayoutTest if $architecture == "arm"
> 
> Since the failures have only been reported on iOS, change this to 'if $architecture == "arm" and $hostOS == "darwin"'

Oh, OK. I'll change it to `if $architecture == "arm" and $hostOS == "darwin"`
Comment 6 Yusuke Suzuki 2015-08-20 22:02:39 PDT
https://bugs.webkit.org/show_bug.cgi?id=148288 will take several time.
So I'll continue to do this.
Comment 7 Yusuke Suzuki 2015-08-20 22:14:23 PDT
Created attachment 259585 [details]
Patch
Comment 8 Michael Saboff 2015-08-21 06:31:25 PDT
Comment on attachment 259585 [details]
Patch

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

Looks good, just another ChangeLog comment.

> LayoutTests/ChangeLog:11
> +        That change increases JIT memory usage.  This is causing the "no-llint" variation of some tests to fail due to "ran out of executable memory".
> +        Since the size of the fixed allocator is defined by the architecture and the tests are only failing on iOS ARM devices, skip those tests.
> +

Eliminate this text since you have a more specific explanation below.
Comment 9 Yusuke Suzuki 2015-08-21 11:09:24 PDT
Comment on attachment 259585 [details]
Patch

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

Thank you! I'll upload the revised one soon.

>> LayoutTests/ChangeLog:11
>> +
> 
> Eliminate this text since you have a more specific explanation below.

Thanks. Dropped.
Comment 10 Yusuke Suzuki 2015-08-21 11:21:48 PDT
Created attachment 259634 [details]
Patch
Comment 11 Michael Saboff 2015-08-21 12:25:01 PDT
Comment on attachment 259634 [details]
Patch

r=me
Comment 12 Yusuke Suzuki 2015-08-21 12:30:13 PDT
(In reply to comment #11)
> Comment on attachment 259634 [details]
> Patch
> 
> r=me

Thank you :)
Comment 13 Yusuke Suzuki 2015-08-21 12:33:14 PDT
Committed r188767: <http://trac.webkit.org/changeset/188767>