RESOLVED FIXED 196089
JSC::createError should clear exception thrown by errorDescriptionForValue
https://bugs.webkit.org/show_bug.cgi?id=196089
Summary JSC::createError should clear exception thrown by errorDescriptionForValue
Tadeu Zagallo
Reported 2019-03-21 10:32:57 PDT
...
Attachments
Patch (1.79 KB, patch)
2019-03-21 10:39 PDT, Tadeu Zagallo
no flags
Archive of layout-test-results from ews105 for mac-highsierra-wk2 (2.87 MB, application/zip)
2019-03-21 12:48 PDT, EWS Watchlist
no flags
Patch for landing (1.70 KB, patch)
2019-03-21 13:47 PDT, Tadeu Zagallo
no flags
Patch for landing (1.84 KB, patch)
2019-03-21 14:07 PDT, Tadeu Zagallo
no flags
Patch for landing (1.84 KB, patch)
2019-03-21 14:37 PDT, Tadeu Zagallo
no flags
Tadeu Zagallo
Comment 1 2019-03-21 10:39:23 PDT
Mark Lam
Comment 2 2019-03-21 12:06:00 PDT
Comment on attachment 365566 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=365566&action=review r=me with fix. > Source/JavaScriptCore/runtime/ExceptionHelpers.cpp:279 > String valueDescription = errorDescriptionForValue(exec, value); > - if (!valueDescription) > + if (!valueDescription) { > + scope.clearException(); I think it's a hack that we return an OOME when we fail to create the requested Error object. I suspect that this is a semantic error because: var error = new RangeError(); error.toString()l // expects "RangeError", but may get "Out of memory". Anyway, that was a pre-existing thing and can be fixed later. For this patch, you also need to placate the exception validator before the call to tryMakeString() below. The way to do this is to add the following before the "if (!valueDescription)" above: ASSERT(scope.exception() || valueDescription); The assertion tickles scope.exception(), thereby telling the validator that we did something with the exception. This placates the validator. Note: the assertion assumes that we will never return a null string unless there's no exception. If that's not the case, just do a real exception check instead.
EWS Watchlist
Comment 3 2019-03-21 12:48:34 PDT
Comment on attachment 365566 [details] Patch Attachment 365566 [details] did not pass mac-wk2-ews (mac-wk2): Output: https://webkit-queues.webkit.org/results/11602569 New failing tests: http/wpt/mediarecorder/MediaRecorder-AV-audio-video-dataavailable.html
EWS Watchlist
Comment 4 2019-03-21 12:48:36 PDT
Created attachment 365596 [details] Archive of layout-test-results from ews105 for mac-highsierra-wk2 The attached test failures were seen while running run-webkit-tests on the mac-wk2-ews. Bot: ews105 Port: mac-highsierra-wk2 Platform: Mac OS X 10.13.6
Tadeu Zagallo
Comment 5 2019-03-21 13:47:51 PDT
Created attachment 365608 [details] Patch for landing
Mark Lam
Comment 6 2019-03-21 13:50:36 PDT
Comment on attachment 365608 [details] Patch for landing View in context: https://bugs.webkit.org/attachment.cgi?id=365608&action=review > Source/JavaScriptCore/runtime/ExceptionHelpers.cpp:278 > + ASSERT(scope.exception() || valueDescription); You also need to clear the exception because you’re in a CatchScope here.
Tadeu Zagallo
Comment 7 2019-03-21 14:07:03 PDT
Created attachment 365615 [details] Patch for landing
Tadeu Zagallo
Comment 8 2019-03-21 14:37:45 PDT
Created attachment 365619 [details] Patch for landing
WebKit Commit Bot
Comment 9 2019-03-21 15:05:02 PDT
Comment on attachment 365619 [details] Patch for landing Clearing flags on attachment: 365619 Committed r243335: <https://trac.webkit.org/changeset/243335>
WebKit Commit Bot
Comment 10 2019-03-21 15:05:04 PDT
All reviewed patches have been landed. Closing bug.
Radar WebKit Bug Importer
Comment 11 2019-03-21 15:21:01 PDT
Note You need to log in before you can comment on or make changes to this bug.