SoftwareTextureLayerLoseFrameSinkTest.RunSingleThread_DelegatingRenderer TSan failures |
||||
Issue descriptionThere are failures in cc_unittests SoftwareTextureLayerLoseFrameSinkTest.RunSingleThread_DelegatingRenderer when running with TSan on Linux. Example failure: https://logs.chromium.org/v/?s=chromium%2Fbb%2Ftryserver.chromium.linux%2Flinux_chromium_tsan_rel_ng%2F281458%2F%2B%2Frecipes%2Fsteps%2Fcc_unittests__with_patch_%2F0%2Flogs%2FSoftwareTextureLayerLoseFrameSinkTest.RunSingleThread_DelegatingRenderer%2F0 It reproduces locally sometimes at ToT. I'm not sure why it's not causing more problems on the waterfall. The test was introduced in https://crrev.com/c/976694 and danakj is out so I'll investigate.
,
Apr 6 2018
Issue 829923 has been merged into this issue.
,
Apr 6 2018
DelayBasedBeginFrameSource sounds like a bad idea for reproducible tests, generally, unfortunately it looks like the default. But either way, I think if DelayBasedBeginFrameSource can get destroyed within its own callstack, this sounds like a potential problem in production, independently of the test, and has either to be fixed, or has to be resilient to that?
,
Apr 6 2018
,
Apr 10 2018
I don't think this is an issue with production. The problem is that TestLayerTreeFrameSink is the whole compositing stack wrapped up into one object. SoftwareTextureLayerLoseFrameSinkTest tests LayerTreeFrameSink loss and destroys TestLayerTreeFrameSink. The display frame getting generated is the signal the test uses to destroy TestLayerTreeFrameSink, but that also destroys the Display/BeginFrameSource and causes use-after-free. The test is disabled now so I'm downgrading the priority here and assigning back to danakj.
,
Apr 19 2018
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/6dd12972bad7c598184a9d23935f467e76bad2d9 commit 6dd12972bad7c598184a9d23935f467e76bad2d9 Author: danakj <danakj@chromium.org> Date: Thu Apr 19 15:08:19 2018 cc: Fix flaky UAF in SoftwareTextureLayerLoseFrameSinkTest The test removes the TestLayerTreeFrameSink from the LayerTreeHost, which destroys its BeginFrameSource, Display, etc. However it was doing this inside a method where the cc::Scheduler, BeginFrameSource, etc are on the stack, so then it unwinds to a UAF scenario. Fix this by PostTasking to a fresh stack for each step of the test so the compositor is not on the stack when interacting with it. R=kylechar@chromium.org Bug: 829484 Cq-Include-Trybots: luci.chromium.try:android_optional_gpu_tests_rel;master.tryserver.blink:linux_trusty_blink_rel Change-Id: I1868d3549c8c3a2b9a9612365bd21753ad713d8e Reviewed-on: https://chromium-review.googlesource.com/1017769 Reviewed-by: kylechar <kylechar@chromium.org> Commit-Queue: danakj <danakj@chromium.org> Cr-Commit-Position: refs/heads/master@{#552019} [modify] https://crrev.com/6dd12972bad7c598184a9d23935f467e76bad2d9/cc/layers/texture_layer_unittest.cc
,
Apr 19 2018
|
||||
►
Sign in to add a comment |
||||
Comment 1 by kylec...@chromium.org
, Apr 6 2018