RESOLVED FIXED314129
Only update page main frame's process in ProvisionalPageProxy::didCommitLoadForFrame when committing the main frame itself
https://bugs.webkit.org/show_bug.cgi?id=314129
Summary Only update page main frame's process in ProvisionalPageProxy::didCommitLoadF...
Basuke Suzuki
Reported 2026-05-05 15:34:25 PDT
In ProvisionalPageProxy::didCommitLoadForFrame, the code assigns the provisional page's FrameProcess to the underlying page's main frame when the frame process has changed: bool frameProcessChanged = m_frameProcess.ptr() != pageMainFrameProcess.ptr(); if (frameProcessChanged) pageMainFrame->setProcess(m_frameProcess); This assignment is only correct when the provisional commit is for the page's main frame itself. Under Site Isolation, a provisional page may commit for a different frame (e.g., during a multi-process BFCache restoration), in which case overwriting the page main frame's FrameProcess with the provisional's FrameProcess is incorrect — it leaves the real main frame pointing to the wrong process. Guard the setProcess call with 'pageMainFrame == m_mainFrame' so we only update the process when the provisional owns the page main frame. In paths where the provisional is for the main frame (the common case), this is a no-op. Prep patch for rdar://173743733 (multi-process BFCache restoration under Site Isolation).
Attachments
Basuke Suzuki
Comment 1 2026-05-05 16:43:17 PDT
Basuke Suzuki
Comment 2 2026-05-05 16:43:38 PDT
EWS
Comment 3 2026-05-06 14:34:26 PDT
Committed 312737@main (64bbad66316c): <https://commits.webkit.org/312737@main> Reviewed commits have been landed. Closing PR #64310 and removing active labels.
Note You need to log in before you can comment on or make changes to this bug.