Okay. This happens because of using RenderTexture.
On beginWithClear() RT turns on isCacheToBufferOn, renders everything, clears it’s cache and forgets to turn that flag off. After that RT, all nodes start to render to cache, using ScrollView._instanceId as cache key (cc.renderer._currentID, which was set in the previous frame). So, when ScrollView.visit() is called, it clears that cache and everything, rendered “between” RT and ScrollView is lost. Including ScrollView’s renderCmd.