DescriptionMake DoDeferredClose a non-nestable task
This makes it behave the same as the Close function.
Destroying RenderWidgetCompositor during RenderWidget::DoDeferredClose
can cause problems for nested message loops. The bug is that
InputHandlerProxy creates a SwapPromiseMonitor which adds itself to the
LayerTreeHost. In that stack, a nested message loop is run which runs
the RenderWidget::DoDeferredClose function which previously destroyed
the LayerTreeHost. This explodes, because LayerTreeHost expects all
SwapPromiseMonitors to be removed before it is destroyed.
Making DoDeferredClose non-nestable avoids this problem, as the nested
message loop can't run the task, the SwapPromiseMonitor safely gets
removed, and then the LayerTreeHost can be cleanly deleted.
This patch depends on https://codereview.chromium.org/512533002
[email protected],[email protected]
BUG=403500
Committed: https://crrev.com/7c132d2e67ce5ebc5d32df5994028f4a419217db
Cr-Commit-Position: refs/heads/master@{#292668}
Patch Set 1 #Patch Set 2 : DCHECK #Patch Set 3 : Rebase #
Total comments: 1
Messages
Total messages: 13 (1 generated)
|