Further investigating this issue, I found out that the subsurface size *does* get set to 0x0, but only after the root surface has been committed. This new patch commits the synchronized subsurface state before committing the root surface, fixing that problem. I hope it doesn't break anything else.