Duncan Coutts pushed to branch wip/dcoutts/io-manager-tidy at Glasgow Haskell Compiler / GHC Commits: 11aa66f5 by Duncan Coutts at 2026-06-20T18:28:24+01:00 Add missing updateRemembSetPushClosure in poll I/O manager For the non-moving GC. - - - - - 1 changed file: - rts/posix/Poll.c Changes: ===================================== rts/posix/Poll.c ===================================== @@ -222,6 +222,13 @@ void syncIOCancelPoll(CapIOManager *iomgr, StgTSO *tso) * status, as that is done by removeFromQueues (in the throwTo* functions). */ tso->block_info.closure = (StgClosure *)END_TSO_QUEUE; + + /* We are in the TSO case, where the aiop was only reachable from the TSO + * itself, and thus it is now no longer be reachable at all. + */ + IF_NONMOVING_WRITE_BARRIER_ENABLED { + updateRemembSetPushClosure(iomgr->cap, (StgClosure *)aiop); + } } @@ -279,7 +286,6 @@ static void notifyIOCompletion(CapIOManager *iomgr, StgAsyncIOOp *aiop) raiseAsync(iomgr->cap, tso, (StgClosure *)blockedOnBadFD_closure, false, NULL); - break; } else { /* We should be guaranteed that the tso is still on the same * cap because the tso was not on the run queue of any cap and @@ -290,6 +296,12 @@ static void notifyIOCompletion(CapIOManager *iomgr, StgAsyncIOOp *aiop) tso->_link = END_TSO_QUEUE; pushOnRunQueue(iomgr->cap, tso); } + /* For the TSO case, the aiop was only reachable from the TSO + * itself, and thus it is now no longer be reachable at all. + */ + IF_NONMOVING_WRITE_BARRIER_ENABLED { + updateRemembSetPushClosure(iomgr->cap, (StgClosure *)aiop); + } break; } case NotifyMVar: View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/commit/11aa66f5d2aea763b77aeb97e5e67a2f... -- View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/commit/11aa66f5d2aea763b77aeb97e5e67a2f... You're receiving this email because of your account on gitlab.haskell.org.
participants (1)
-
Duncan Coutts (@dcoutts)