Duncan Coutts pushed to branch wip/dcoutts/issue-27284 at Glasgow Haskell Compiler / GHC Commits: a476c9a2 by Duncan Coutts at 2026-07-19T00:26:43+01:00 Fix failing test GcStaticPointers for non-moving GC Minor mistake in asserting something before checking for that same thing. Specifically, Bdescr asserts HEAP_ALLOCED_GC, but Bdescr was being used prior to a guard that checks HEAP_ALLOCED_GC. The solution is just to move the use of Bdescr after the guard. Thanks to Simon Jakobi for identifying the problem. - - - - - 1 changed file: - rts/sm/NonMovingMark.c Changes: ===================================== rts/sm/NonMovingMark.c ===================================== @@ -2018,8 +2018,10 @@ bool nonmovingTidyWeaks (struct MarkQueue_ *queue) // See Note [Weak pointer processing and the non-moving GC] in // MarkWeak.c - bdescr *key_bd = Bdescr((StgPtr) w->key); - bool key_in_nonmoving = HEAP_ALLOCED_GC(w->key) && block_get_flags(key_bd) & BF_NONMOVING; + bool key_in_nonmoving = + HEAP_ALLOCED_GC(w->key) && + block_get_flags(Bdescr((StgPtr) w->key)) & BF_NONMOVING; + if (!key_in_nonmoving || nonmovingIsNowAlive(w->key)) { nonmovingMarkLiveWeak(queue, w); did_work = true; View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/commit/a476c9a2b62c5c543bbabeac360786ac... -- View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/commit/a476c9a2b62c5c543bbabeac360786ac... You're receiving this email because of your account on gitlab.haskell.org. Manage all notifications: https://gitlab.haskell.org/-/profile/notifications | Help: https://gitlab.haskell.org/help