The FindController code uses a GraphicsContext to draw shadowed boxes, which triggers a re-entrant code path in ShadowBlur.
Bad stack is: -> WebCore::ScratchBuffer::getScratchBuffer(WebCore::IntSize const&) -> WebCore::ShadowBlur::drawRectShadowWithTiling(WebCore::GraphicsContext*, WebCore::FloatRect const&, WebCore::RoundedIntRect::Radii const&, WebCore::IntSize const&) -> WebCore::ShadowBlur::drawRectShadow(WebCore::GraphicsContext*, WebCore::FloatRect const&, WebCore::RoundedIntRect::Radii const&) -> WebCore::GraphicsContext::fillRect(WebCore::FloatRect const&) -> WebCore::ShadowBlur::drawRectShadowWithTiling(WebCore::GraphicsContext*, WebCore::FloatRect const&, WebCore::RoundedIntRect::Radii const&, WebCore::IntSize const&) -> WebCore::ShadowBlur::drawRectShadow(WebCore::GraphicsContext*, WebCore::FloatRect const&, WebCore::RoundedIntRect::Radii const&) -> WebCore::GraphicsContext::fillRect(WebCore::FloatRect const&) -> WebKit::FindController::drawRect(WebKit::PageOverlay*, WebCore::GraphicsContext&, WebCore::IntRect const&) -> WebKit::PageOverlay::drawRect(WebCore::GraphicsContext&, WebCore::IntRect const&) -> WebKit::WebPage::drawRect(WebCore::GraphicsContext&, WebCore::IntRect const&) -> WebKit::DrawingAreaImpl::display(WebKit::UpdateInfo&) -> WebKit::DrawingAreaImpl::display() -> RunLoop::Timer<WebKit::DrawingAreaImpl>::fired() -> RunLoop::TimerBase::timerFired(__CFRunLoopTimer*, void*)
Created attachment 81346 [details] Patch
http://trac.webkit.org/changeset/77729
<rdar://problem/8962505>