Bug 132783

Summary: [iOS WebKit2] REGRESSION (r168493): Canvasmark 2013 benchmark always hits the RELEASE_ASSERT in RemoteLayerTreeDrawingArea::flushLayers()
Product: WebKit Reporter: Tim Horton <thorton>
Component: WebKit2Assignee: Tim Horton <thorton>
Status: RESOLVED FIXED    
Severity: Normal CC: andersca, commit-queue, sam, simon.fraser, webkit-bug-importer
Priority: P2 Keywords: InRadar
Version: 528+ (Nightly build)   
Hardware: Unspecified   
OS: Unspecified   
Attachments:
Description Flags
patch none

Description Tim Horton 2014-05-10 14:20:29 PDT
Threading is hard (for me).

This page: http://www.kevs3d.co.uk/dev/canvasmark/ always hits the RELEASE_ASSERT added in r168493 when running the benchmark.

However! It's a total lie; we're getting didUpdate back from the UI process on the Web process's main thread while the Web process's CommitQueue is *in between* sendMessage() and setting m_hasFlushed.

So, we assert.

I'm going to move resetting m_hasFlushed *before* sendMessage(), because we really only care about asserting if we start flushing again before we have flushed the contexts; sendMessage() doesn't really have any bearing on flushing correctness.
Comment 1 Radar WebKit Bug Importer 2014-05-10 14:21:46 PDT
<rdar://problem/16877326>
Comment 2 Tim Horton 2014-05-10 14:30:08 PDT
Created attachment 231235 [details]
patch
Comment 3 WebKit Commit Bot 2014-05-10 17:54:00 PDT
Comment on attachment 231235 [details]
patch

Clearing flags on attachment: 231235

Committed r168589: <http://trac.webkit.org/changeset/168589>
Comment 4 WebKit Commit Bot 2014-05-10 17:54:03 PDT
All reviewed patches have been landed.  Closing bug.