In https://chromium-review.googlesource.com/c/chromium/src/+/1028846, a DCHECK was temporarily added to ~RenderWidget() that ensured the stored routing_id_ was no longer in RenderThread::current()->GetRouter().
This somewhat consistently broke SitePerProcessBrowserTest.ParentDetachRemoteChild (local repro was about 1 failure every 3 runs on linux).
Upon adding debugging output, it seems like routing ids were being reused in the browser test. Thus between when the RenderWidget unregistered itself, and when it was deleted, another object was added to the routing table with the same ID. Unclear how this could be happening.