From 60802db56111ebf24933439d1ea37cc1b04bb98a Mon Sep 17 00:00:00 2001 From: Ben Gamari <ben@smart-cactus.org> Date: Thu, 22 Jun 2023 19:00:06 -0400 Subject: [PATCH] rts/Prof: Fix data race --- rts/Proftimer.c | 3 ++- rts/sm/GC.c | 4 ++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/rts/Proftimer.c b/rts/Proftimer.c index 22ef1c417182..be29c06ec8bc 100644 --- a/rts/Proftimer.c +++ b/rts/Proftimer.c @@ -124,7 +124,8 @@ handleProfTick(void) uint32_t n; for (n=0; n < getNumCapabilities(); n++) { Capability *cap = getCapability(n); - cap->r.rCCCS->time_ticks++; + CostCentreStack *ccs = RELAXED_LOAD(&cap->r.rCCCS); + ccs->time_ticks++; traceProfSampleCostCentre(cap, cap->r.rCCCS, total_ticks); } } diff --git a/rts/sm/GC.c b/rts/sm/GC.c index 51f8b32e4b00..200df4a2f598 100644 --- a/rts/sm/GC.c +++ b/rts/sm/GC.c @@ -340,8 +340,8 @@ GarbageCollect (struct GcConfig config, // attribute any costs to CCS_GC #if defined(PROFILING) for (n = 0; n < getNumCapabilities(); n++) { - save_CCS[n] = getCapability(n)->r.rCCCS; - getCapability(n)->r.rCCCS = CCS_GC; + save_CCS[n] = RELAXED_LOAD(&getCapability(n)->r.rCCCS); + RELAXED_STORE(&getCapability(n)->r.rCCCS, CCS_GC); } #endif -- GitLab