DescriptionWhile testing expanded mash_browser_tests a flaky shutdown crash was found in GpuClient.
GpuClient::EstablishGpuChannel could be called after GpuHost or GpuClient had been deleted.
GpuClient was holding a raw pointer back to GpuHost. It's lifetime can exceed GpuHost as it exists in a StrongBindingPtr. It also was registering a callback with and Unretained pointer to itself. So it could be called post delete.
This change updates GpuHost to hold all GpuClients in a StrongBindingSet which deletes them upon shutdown.
This also updates GpuClient to register the callback with a WeakPtr to itself, so that the callback can be invalidated upon deletion.
TEST=GpuHostTest.GpuClientDestructionOrder,
GpuHostTest.HostDeletionInvalidatesGpuClientCallback
TEST=BrowserTests
BUG=701380
CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.android:android_optional_gpu_tests_rel;master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel
Review-Url: https://codereview.chromium.org/2741343003
Cr-Commit-Position: refs/heads/master@{#459248}
Committed: https://chromium.googlesource.com/chromium/src/+/cead65052697a1c3ec0d2fbfb7ee0ee9a9e52963
Patch Set 1 #Patch Set 2 : moarvim testing/buildbot/filters/mash.browser_tests.filter vim testing/buildbot/filters/mash.browse… #Patch Set 3 : potential arc crash #Patch Set 4 : more tests #Patch Set 5 : testing if https test breaks suite #Patch Set 6 : remove suspected failure #Patch Set 7 : remove another potentially crashing test #Patch Set 8 : try again #Patch Set 9 : \ #Patch Set 10 : also works? #Patch Set 11 : logs for trybots #Patch Set 12 : Testing GpuClient #
Total comments: 2
Patch Set 13 : Redo GpuClient handling #Patch Set 14 : Rebase #Patch Set 15 : missing deps: #
Total comments: 19
Patch Set 16 : Address Review comments #
Total comments: 2
Patch Set 17 : Update Deps. Remove Test Filter #
Total comments: 2
Patch Set 18 : Remove gpu/ipc/service deps #Patch Set 19 : fix x11 re-definition #
Messages
Total messages: 38 (17 generated)
|