diff --git a/racket/src/racket/gc2/mem_account.c b/racket/src/racket/gc2/mem_account.c index dee0990d92..7121add724 100644 --- a/racket/src/racket/gc2/mem_account.c +++ b/racket/src/racket/gc2/mem_account.c @@ -441,8 +441,10 @@ int BTC_bi_chan_mark(void *p, struct NewGC *gc) /* Race conditions here on `mem_size', and likely double counting when the same async channels are accessible from paired bi channels --- but those approximations are ok for accounting. */ - account_memory(gc, gc->current_mark_owner, gcBYTES_TO_WORDS(bc->link->sendch->mem_size), 0); - account_memory(gc, gc->current_mark_owner, gcBYTES_TO_WORDS(bc->link->recvch->mem_size), 0); + if (bc->link->sendch) + account_memory(gc, gc->current_mark_owner, gcBYTES_TO_WORDS(bc->link->sendch->mem_size), 0); + if (bc->link->recvch) + account_memory(gc, gc->current_mark_owner, gcBYTES_TO_WORDS(bc->link->recvch->mem_size), 0); } return gc->mark_table[btc_redirect_bi_chan](p, gc); }