FrameView::setTransparent uses FrameView::renderView to get the RenderView from the Document, but setTransparent can be called from Frame::createView, which is before the new Document has been swapped in, so it gets the old (pre-navigation) RenderView, and uses that to schedule a compositing layer update, which eventually comes through and can blow away the new document's layer tree.
Created attachment 237719 [details]
Comment on attachment 237719 [details]
View in context: https://bugs.webkit.org/attachment.cgi?id=237719&action=review
> + Reviewed by NOBODY (OOPS!).
> + * page/FrameView.cpp:
You fail to explain the "can result in an empty layer tree" part here.
> + if (&renderView->frameView() != this)
> + return;
This deserves a comment.