Skip to content

MessagePort: close a port whose peer closed, so it is rejected as a transferable - #38066

Open
robobun wants to merge 6 commits into
mainfrom
farm/23737826/messageport-peer-close-detaches
Open

MessagePort: close a port whose peer closed, so it is rejected as a transferable#38066
robobun wants to merge 6 commits into
mainfrom
farm/23737826/messageport-peer-close-detaches

MessagePort: trim the peer-close comments

bc7a4e0
Select commit
Loading
Failed to load commit list.
Claude / Claude Code Review completed Aug 13, 2026 in 35m 27s

Code review found 4 important issues

Found 1 candidates, confirmed 4. See review comments for details.

Details

Severity Count
🔴 Important 4
🟡 Nit 0
🟣 Pre-existing 0
Severity File:Line Issue
🔴 Important src/jsc/bindings/webcore/MessagePort.cpp:297-303 Late 'close' listener after collected-peer idle no-op pins wrapper forever

Annotations

Check failure on line 303 in src/jsc/bindings/webcore/MessagePort.cpp

See this annotation in the file changed.

@claude claude / Claude Code Review

Late 'close' listener after collected-peer idle no-op pins wrapper forever

The collected-peer idle no-op leaves `m_closeEventDispatched` false, so a `'close'` listener added *after* `peerClosed()` ran pins the wrapper forever via `virtualHasPendingActivity()` (`m_hasCloseEventListener && !m_closeEventDispatched`) — the retroactive `registerCloseContext()` that used to re-fire it was removed at :541-543, and it would early-return on `ContextKnown` (set at `create()`) anyway. Pre-PR the late `addEventListener('close')` re-posted the notification and `peerClosed()` uncond