Title: [172807] trunk/Source/_javascript_Core
Revision
172807
Author
msab...@apple.com
Date
2014-08-20 13:28:24 -0700 (Wed, 20 Aug 2014)

Log Message

REGRESSION: Web Inspector crashes when reloading apple.com with Timeline recording active
https://bugs.webkit.org/show_bug.cgi?id=136034

Reviewed by Mark Lam.

DebuggerCallFrame::positionForCallFrame is trying to unwind starting somewhere in the middle
of the stack.  Hardened StackVisitor to skip over the frames between the current top frame
and the requested start frame.

* interpreter/StackVisitor.cpp:
(JSC::StackVisitor::StackVisitor):

Modified Paths

Diff

Modified: trunk/Source/_javascript_Core/ChangeLog (172806 => 172807)


--- trunk/Source/_javascript_Core/ChangeLog	2014-08-20 20:19:50 UTC (rev 172806)
+++ trunk/Source/_javascript_Core/ChangeLog	2014-08-20 20:28:24 UTC (rev 172807)
@@ -1,3 +1,17 @@
+2014-08-20  Michael Saboff  <msab...@apple.com>
+
+        REGRESSION: Web Inspector crashes when reloading apple.com with Timeline recording active
+        https://bugs.webkit.org/show_bug.cgi?id=136034
+
+        Reviewed by Mark Lam.
+
+        DebuggerCallFrame::positionForCallFrame is trying to unwind starting somewhere in the middle
+        of the stack.  Hardened StackVisitor to skip over the frames between the current top frame
+        and the requested start frame.
+
+        * interpreter/StackVisitor.cpp:
+        (JSC::StackVisitor::StackVisitor):
+
 2014-08-20  Brent Fulgham  <bfulg...@apple.com>
 
         [Win] _javascript_Core.dll is missing version information.

Modified: trunk/Source/_javascript_Core/interpreter/StackVisitor.cpp (172806 => 172807)


--- trunk/Source/_javascript_Core/interpreter/StackVisitor.cpp	2014-08-20 20:19:50 UTC (rev 172806)
+++ trunk/Source/_javascript_Core/interpreter/StackVisitor.cpp	2014-08-20 20:28:24 UTC (rev 172807)
@@ -38,12 +38,20 @@
 StackVisitor::StackVisitor(CallFrame* startFrame)
 {
     m_frame.m_index = 0;
-    if (startFrame)
+    CallFrame* topFrame;
+    if (startFrame) {
         m_frame.m_VMEntryFrame = startFrame->vm().topVMEntryFrame;
-    else
+        topFrame = startFrame->vm().topCallFrame;
+    } else {
         m_frame.m_VMEntryFrame = 0;
+        topFrame = 0;
+    }
     m_frame.m_callerIsVMEntryFrame = false;
-    readFrame(startFrame);
+    readFrame(topFrame);
+
+    // Find the frame the caller wants to start unwinding from.
+    while (m_frame.callFrame() && m_frame.callFrame() != startFrame)
+        gotoNextFrame();
 }
 
 void StackVisitor::gotoNextFrame()
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to