Skip to content

Conversation

@Legioth
Copy link
Member

@Legioth Legioth commented Jan 20, 2026

There's a race between the signal tree lock and the UsageTracker subscription lock because notifying about a change holds the signal lock when trying to acquire the subscription lock. Closing the subscription does on the other hand hold the subscription lock while trying to acquire the signal lock.

This is fixed by releasing the subscription lock in the close() code path before calling into signal code. This remains safe by ensuring that only one thread actually performs the close operation.

There's a race between the signal tree lock and the UsageTracker
subscription lock because notifying about a change holds the signal lock
when trying to acquire the subscription lock. Closing the subscription
does on the other hand hold the subscription lock while trying to
acquire the signal lock.

This is fixed by releasing the subscription lock in the close() code
path before calling into signal code. This remains safe by ensuring that
only one thread actually performs the close operation.
@sonarqubecloud
Copy link

@github-actions
Copy link

Test Results

1 315 files  ±0  1 315 suites  ±0   1h 15m 41s ⏱️ +32s
9 328 tests ±0  9 260 ✅ ±0  68 💤 ±0  0 ❌ ±0 
9 785 runs  +9  9 709 ✅ +9  76 💤 ±0  0 ❌ ±0 

Results for commit c6d9849. ± Comparison against base commit cc33f5b.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants