WebContent crash in WebKit::WebPage::expandedRangeFromHandle
authorrniwa@webkit.org <rniwa@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sat, 20 Sep 2014 03:07:59 +0000 (03:07 +0000)
committerrniwa@webkit.org <rniwa@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sat, 20 Sep 2014 03:07:59 +0000 (03:07 +0000)
https://bugs.webkit.org/show_bug.cgi?id=136969

Reviewed by David Kilzer.

The crash was caused by m_currentBlockSelection and frame.selection().selection().toNormalizedRange()
both being null and the subsequent lines of code assuming currentRange to be not null.

Replace the assertion by an early exit since the range could be null here.

In the future, we should figure out if there are other things we need to do in addition
to checking the nullity when this race condition is hit.

* WebProcess/WebPage/ios/WebPageIOS.mm:
(WebKit::WebPage::computeExpandAndShrinkThresholdsForHandle):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@173788 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/WebKit2/ChangeLog
Source/WebKit2/WebProcess/WebPage/ios/WebPageIOS.mm

index bd98af3a14ec1e5aabeea839c374d0de70f49077..cfdfef2c7461125308fc048f7df372cf36db509b 100644 (file)
@@ -1,3 +1,21 @@
+2014-09-19  Ryosuke Niwa  <rniwa@webkit.org>
+
+        WebContent crash in WebKit::WebPage::expandedRangeFromHandle
+        https://bugs.webkit.org/show_bug.cgi?id=136969
+
+        Reviewed by David Kilzer.
+
+        The crash was caused by m_currentBlockSelection and frame.selection().selection().toNormalizedRange()
+        both being null and the subsequent lines of code assuming currentRange to be not null.
+
+        Replace the assertion by an early exit since the range could be null here.
+
+        In the future, we should figure out if there are other things we need to do in addition
+        to checking the nullity when this race condition is hit.
+
+        * WebProcess/WebPage/ios/WebPageIOS.mm:
+        (WebKit::WebPage::computeExpandAndShrinkThresholdsForHandle):
+
 2014-09-19  Dean Jackson  <dino@apple.com>
 
         Multithreaded WebGL is a bad idea - remove it
index 83fbe74cc357cdf40a2dc1b7b77cea299f0c1c94..15b9c90ae94ddb6b74132a2876182f99b49251ac 100644 (file)
@@ -1330,7 +1330,11 @@ void WebPage::computeExpandAndShrinkThresholdsForHandle(const IntPoint& point, S
 {
     Frame& frame = m_page->focusController().focusedOrMainFrame();
     RefPtr<Range> currentRange = m_currentBlockSelection ? m_currentBlockSelection.get() : frame.selection().selection().toNormalizedRange();
-    ASSERT(currentRange);
+
+    // FIXME: This used to be an assertion but there appears to be some race condition under which we get a null range.
+    // Should we do other things in addition to the null check here?
+    if (!currentRange)
+        return;
 
     RefPtr<Range> expandedRange = expandedRangeFromHandle(currentRange.get(), handlePosition);
     SelectionFlags flags;