Skip to content

Commit 8ee38ac

Browse files
committed
scx_arena: Drop cluster Arc references before processing cores
Drop topo.all_clusters before iterating topo.all_cores to release Arc references. Clusters hold Arc references to cores, preventing Arc::into_inner() from succeeding during topology setup. Signed-off-by: Daniel Hodges <[email protected]>
1 parent 4cae859 commit 8ee38ac

File tree

2 files changed

+7
-0
lines changed

2 files changed

+7
-0
lines changed

rust/scx_arena/scx_arena/src/arenalib.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -173,6 +173,10 @@ impl<'a> ArenaLib<'a> {
173173
)?;
174174
}
175175

176+
// Drop all_clusters to release Arc references to cores before processing cores
177+
// Clusters may hold Arc references to cores, so we need to drop them first
178+
drop(topo.all_clusters);
179+
176180
for (core_id, core) in topo.all_cores {
177181
self.setup_topology_node(
178182
Arc::<Core>::into_inner(core)

rust/scx_arena/selftests/src/main.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -145,6 +145,9 @@ fn setup_topology(skel: &mut BpfSkel<'_>) -> Result<()> {
145145
)?;
146146
}
147147

148+
// Drop all_clusters to release Arc references to cores before processing cores
149+
drop(topo.all_clusters);
150+
148151
for (_, core) in topo.all_cores {
149152
setup_topology_node(
150153
skel,

0 commit comments

Comments
 (0)