The FrameSinkId for the PDF plugin process never gets registered as part of the frame sink hierarchy. When you open a PDF document there look to be 3 processes that submit CompositorFrames. There is a surface embedding hierarchy like this:
SurfaceId(FrameSinkId(0, 1), LocalSurfaceId(N, ...)) <- browser
SurfaceId(FrameSinkId(6, 1), LocalSurfaceId(N, ...)) <- renderer
SurfaceId(FrameSinkId(1, 1), LocalSurfaceId(N, ...)) <- pdf plugin
The hierarchy should look like this:
FrameSinkId(0, 1) <- browser
FrameSinkId(6, 1) <- renderer
FrameSinkId(7, 1) <- pdf plugin
We never register anything for pdf plugin so it actually looks like this:
FrameSinkId(0, 1) <- browser
FrameSinkId(6, 1) <- renderer
When FrameSinkId(7, 1) creates a new Surface, HostFrameSinkManager doesn't know what FrameSinkId should embed it and drops the temporary reference.
Comment 1 by bugdroid1@chromium.org
, Aug 29 2017