RESOLVED FIXED Bug 139500
PutById inline caching causing segfault in attached test.
https://bugs.webkit.org/show_bug.cgi?id=139500
Summary PutById inline caching causing segfault in attached test.
Matthew Mirman
Reported 2014-12-10 11:58:04 PST
The attached test fails when LLInt is on and thresholdForJITAfterWarmUp=100:
Attachments
failing put-by-id resursive test (622 bytes, text/plain)
2014-12-10 12:01 PST, Matthew Mirman
no flags
Fixes operationPutByIdOptimizes such that they save the structure before the put (8.54 KB, patch)
2014-12-15 14:16 PST, Matthew Mirman
ggaren: review+
Fixes operationPutByIdOptimizes such that they save the structure before the put (11.37 KB, patch)
2014-12-23 15:34 PST, Matthew Mirman
fpizlo: review+
Fixes operationPutByIdOptimizes such that they save the structure before the put (28.51 KB, patch)
2015-01-13 14:12 PST, Matthew Mirman
no flags
Fixes operationPutByIdOptimizes such that they save the structure before the put (30.50 KB, patch)
2015-01-13 14:20 PST, Matthew Mirman
no flags
Fixes operationPutByIdOptimizes such that they save the structure before the put (28.96 KB, patch)
2015-01-13 14:35 PST, Matthew Mirman
fpizlo: review+
fpizlo: commit-queue-
Fixes operationPutByIdOptimizes such that they save the structure before the put (29.00 KB, patch)
2015-01-13 15:07 PST, Matthew Mirman
fpizlo: commit-queue-
Fixes operationPutByIdOptimizes such that they save the structure before the put (28.53 KB, patch)
2015-01-14 11:26 PST, Matthew Mirman
no flags
Matthew Mirman
Comment 1 2014-12-10 12:01:38 PST
Created attachment 243056 [details] failing put-by-id resursive test
Matthew Mirman
Comment 2 2014-12-15 14:16:58 PST
Created attachment 243308 [details] Fixes operationPutByIdOptimizes such that they save the structure before the put
Geoffrey Garen
Comment 3 2014-12-15 16:30:37 PST
Comment on attachment 243308 [details] Fixes operationPutByIdOptimizes such that they save the structure before the put View in context: https://bugs.webkit.org/attachment.cgi?id=243308&action=review Code looks good, but you should improve this layout test before landing it. > Source/JavaScriptCore/tests/stress/put-by-id-build-list-order-recurse.js:15 > + var str = "for (var i = " + currentCount + "; i < " + (100 + currentCount) + "; ++i)\n" > + + " o.f\n"; > + eval(str); An incorrect read or write can sometimes survive without crashing. This test should explicitly check its result for some sensible value.
Geoffrey Garen
Comment 4 2014-12-15 16:34:14 PST
It looks like this crash is in the JIT. Why does it only happen when the LLInt is enabled?
Matthew Mirman
Comment 5 2014-12-16 11:27:41 PST
It looks like the major thing that was changing the occurrence of the bug was thresholdForJITAfterWarmUp. Setting it to 100 causes this test specifically to crash, but I have been able to get smaller tests to crash with it set much lower (6). Changing when the JIT is invoked changes when the inline cache gets rewritten.
Matthew Mirman
Comment 6 2014-12-16 12:14:14 PST
Comment on attachment 243308 [details] Fixes operationPutByIdOptimizes such that they save the structure before the put Committed r177380: <http://trac.webkit.org/changeset/177380>
Matthew Mirman
Comment 7 2014-12-16 12:14:52 PST
Reviewed patch landed. Closing bug.
WebKit Commit Bot
Comment 8 2014-12-16 15:02:04 PST
Re-opened since this is blocked by bug 139707
Matthew Mirman
Comment 9 2014-12-23 15:34:21 PST
Created attachment 243702 [details] Fixes operationPutByIdOptimizes such that they save the structure before the put It appears as though there still might be some failing tests due to rdar://problem/19339106 so this isn't to be committed quite yet.
Matthew Mirman
Comment 10 2014-12-23 15:38:37 PST
Comment on attachment 243702 [details] Fixes operationPutByIdOptimizes such that they save the structure before the put Nvm the last comment. run-javascript-tests works.
Filip Pizlo
Comment 11 2015-01-05 11:05:21 PST
Comment on attachment 243702 [details] Fixes operationPutByIdOptimizes such that they save the structure before the put r=me if there is no perf impact
Matthew Mirman
Comment 12 2015-01-13 14:12:39 PST
Created attachment 244546 [details] Fixes operationPutByIdOptimizes such that they save the structure before the put
WebKit Commit Bot
Comment 13 2015-01-13 14:14:58 PST
Attachment 244546 [details] did not pass style-queue: ERROR: Source/JavaScriptCore/jit/Repatch.cpp:997: When wrapping a line, only indent 4 spaces. [whitespace/indent] [3] ERROR: Source/JavaScriptCore/jit/Repatch.cpp:1003: Multi line control clauses should use braces. [whitespace/braces] [4] ERROR: Source/JavaScriptCore/jit/Repatch.cpp:1007: When wrapping a line, only indent 4 spaces. [whitespace/indent] [3] ERROR: Source/JavaScriptCore/jit/Repatch.cpp:1010: Should have only a single space after a punctuation in a comment. [whitespace/comments] [5] ERROR: Source/JavaScriptCore/jit/Repatch.cpp:1012: Multi line control clauses should use braces. [whitespace/braces] [4] Total errors found: 5 in 10 files If any of these errors are false positives, please file a bug against check-webkit-style.
Matthew Mirman
Comment 14 2015-01-13 14:20:14 PST
Created attachment 244549 [details] Fixes operationPutByIdOptimizes such that they save the structure before the put fixes some style from the last patch.
Filip Pizlo
Comment 15 2015-01-13 14:24:01 PST
Comment on attachment 244549 [details] Fixes operationPutByIdOptimizes such that they save the structure before the put View in context: https://bugs.webkit.org/attachment.cgi?id=244549&action=review > Source/JavaScriptCore/tests/mozilla/mozilla-tests.yaml:793 > +# - path: ecma/LexicalConventions/7.7.3.js > +# cmd: defaultRunMozillaTest :normal, "../shell.js" What's going on here?
Matthew Mirman
Comment 16 2015-01-13 14:35:34 PST
Created attachment 244550 [details] Fixes operationPutByIdOptimizes such that they save the structure before the put
Filip Pizlo
Comment 17 2015-01-13 14:57:59 PST
Comment on attachment 244550 [details] Fixes operationPutByIdOptimizes such that they save the structure before the put View in context: https://bugs.webkit.org/attachment.cgi?id=244550&action=review You should rebase this patch. > Source/JavaScriptCore/tests/mozilla/mozilla-tests.yaml:793 > -- path: ecma/LexicalConventions/7.7.3.js > - cmd: defaultRunMozillaTest :normal, "../shell.js" > +# - path: ecma/LexicalConventions/7.7.3.js > +# cmd: defaultRunMozillaTest :normal, "../shell.js" You should put a comment above this referencing the bug.
Matthew Mirman
Comment 18 2015-01-13 15:02:13 PST
(In reply to comment #15) > Comment on attachment 244549 [details] > Fixes operationPutByIdOptimizes such that they save the structure before the > put > > View in context: > https://bugs.webkit.org/attachment.cgi?id=244549&action=review > > > Source/JavaScriptCore/tests/mozilla/mozilla-tests.yaml:793 > > +# - path: ecma/LexicalConventions/7.7.3.js > > +# cmd: defaultRunMozillaTest :normal, "../shell.js" > > What's going on here? <rdar://problem/19339106>
Matthew Mirman
Comment 19 2015-01-13 15:07:24 PST
Created attachment 244553 [details] Fixes operationPutByIdOptimizes such that they save the structure before the put
Filip Pizlo
Comment 20 2015-01-13 15:10:52 PST
Comment on attachment 244553 [details] Fixes operationPutByIdOptimizes such that they save the structure before the put Can you rebase this?
Matthew Mirman
Comment 21 2015-01-14 11:26:01 PST
Created attachment 244625 [details] Fixes operationPutByIdOptimizes such that they save the structure before the put I accidentally included a change to a non existent file in the last patch. This should be better.
Matthew Mirman
Comment 22 2015-01-14 13:28:15 PST
Comment on attachment 244625 [details] Fixes operationPutByIdOptimizes such that they save the structure before the put Committed r177380: <http://trac.webkit.org/changeset/178441>
Matthew Mirman
Comment 23 2015-01-14 13:28:36 PST
Reviewed patch landed. Closing bug.
Note You need to log in before you can comment on or make changes to this bug.