Changeset 180907 in webkit
- Timestamp:
- Mar 2, 2015 4:24:24 PM (9 years ago)
- Location:
- trunk
- Files:
-
- 2 added
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/LayoutTests/ChangeLog
r180904 r180907 19 19 * svg/text/tspan-outline-expected.svg: 20 20 * svg/text/tspan-outline.html: 21 22 2015-03-02 Mark Lam <mark.lam@apple.com> 23 24 Exception stack unwinding in JSC hangs while the Timeline Profiler is enabled. 25 <https://webkit.org/b/142191> 26 27 Reviewed by Geoffrey Garen. 28 29 * inspector/timeline/exception-in-injected-script-while-recording-expected.txt: Added. 30 * inspector/timeline/exception-in-injected-script-while-recording.html: Added. 21 31 22 32 2015-03-02 Mark Lam <mark.lam@apple.com> -
trunk/Source/JavaScriptCore/ChangeLog
r180903 r180907 1 2015-03-02 Mark Lam <mark.lam@apple.com> 2 3 Exception stack unwinding in JSC hangs while the Timeline Profiler is enabled. 4 <https://webkit.org/b/142191> 5 6 Reviewed by Geoffrey Garen. 7 8 Imagine a scenario where the Inspector is paused / suspended at a breakpoint or 9 while the user is stepping through JS code. The user then tries to evaluate an 10 expression in the console, and that evaluation results in an exception being 11 thrown. Currently, if the Timeline Profiler is enabled while this exception is 12 being thrown, the WebProcess will hang while trying to handle that exception. 13 14 The issue is that the Timeline Profiler's ProfileGenerator::didExecute() will 15 return early and decline to process ProfileNodes if the Inspector is paused. 16 This is proper because it does not want to count work done for injected scripts 17 (e.g. from the console) towards the timeline profile of the webpage being run. 18 However, this is in conflict with ProfileGenerator::exceptionUnwind()'s 19 expectation that didExecute() will process ProfileNodes in order to do the stack 20 unwinding for the exception handling. As a result, 21 ProfileGenerator::exceptionUnwind() hangs. 22 23 ProfileGenerator::exceptionUnwind() is in error. While the Inspector is paused, 24 there will not be any ProfileNodes that it needs to "unwind". Hence, the fix is 25 simply to return early also in ProfileGenerator::exceptionUnwind() if the 26 Inspector is paused. 27 28 * profiler/ProfileGenerator.cpp: 29 (JSC::ProfileGenerator::exceptionUnwind): 30 1 31 2015-03-02 Filip Pizlo <fpizlo@apple.com> 2 32 -
trunk/Source/JavaScriptCore/profiler/ProfileGenerator.cpp
r175203 r180907 195 195 void ProfileGenerator::exceptionUnwind(ExecState* handlerCallFrame, const CallIdentifier&) 196 196 { 197 if (m_suspended) 198 return; 199 197 200 // If the current node was called by the handler (==) or any 198 201 // more nested function (>) the we have exited early from it.
Note: See TracChangeset
for help on using the changeset viewer.