RendererDataMemoizingStore deadlocks when calling Store() on the UI thread for an RPH that has been destroyed |
|
Issue descriptionRendererDataMemoizingStore::Store() takes the lock. If the process isn't already being watched, and we are on the UI thread, Store() calls StartObservingProcess(). If StartObservingProcess() does find a RenderProcessHost for the given |process_id|, then it calls RemoveRenderProcessItems(), which tries to take the lock and deadlocks. I somehow ran into this while writing a ResourceDispatcherHost unit test. I suspect it's not really supposed to happen, because if we are on the UI thread the whole time, a RenderProcessHost that existed when Store() was called can't get destroyed before StartObservingProcess() is called (it's all synchronous). So maybe Store() should DCHECK that |process_id| corresponds to a valid RPH at the outset.
,
Sep 12 2016
|
|
►
Sign in to add a comment |
|
Comment 1 by est...@chromium.org
, Mar 2 2016