The scrolling tree contains the latest scrolling-related state for layers managed by the scrolling tree. When the main thread flushes compositing layers, it might flush layer positions that are stale in relation to the scrolling thread state. We currently (mostly) avoid jank here by the tricky "set or sync" logic, and "isInUserScroll" state, but it would be simpler to just have the scrolling tree do a pass after layer flushing.
On iOS we already do this by pushing the current layoutViewportRect through the scrolling coordinator in the UI process, after receiving a transaction.
*** This bug has been marked as a duplicate of bug 195507 ***