Skip to content

Commit

Permalink
bugfix: load jl_n_threads in jl_gc_pool_live_bytes (JuliaLang#52034)
Browse files Browse the repository at this point in the history
Otherwise we may just observe `gc_n_threads = 0` (`jl_gc_collect` sets
it to 0 in the very end of its body) and this function becomes a no-op.
  • Loading branch information
d-netto committed Apr 16, 2024
1 parent 046b7b8 commit 317e5e0
Showing 1 changed file with 4 additions and 2 deletions.
6 changes: 4 additions & 2 deletions src/gc.c
Original file line number Diff line number Diff line change
Expand Up @@ -3254,9 +3254,11 @@ JL_DLLEXPORT int64_t jl_gc_sync_total_bytes(int64_t offset) JL_NOTSAFEPOINT

JL_DLLEXPORT int64_t jl_gc_pool_live_bytes(void)
{
int n_threads = jl_atomic_load_acquire(&jl_n_threads);
jl_ptls_t *all_tls_states = jl_atomic_load_relaxed(&jl_all_tls_states);
int64_t pool_live_bytes = 0;
for (int i = 0; i < gc_n_threads; i++) {
jl_ptls_t ptls2 = gc_all_tls_states[i];
for (int i = 0; i < n_threads; i++) {
jl_ptls_t ptls2 = all_tls_states[i];
if (ptls2 != NULL) {
pool_live_bytes += jl_atomic_load_relaxed(&ptls2->gc_num.pool_live_bytes);
}
Expand Down

0 comments on commit 317e5e0

Please sign in to comment.