Skip to content

Conversation

@droideck
Copy link
Collaborator

In both lincowcell and lincowcell_async, the drop loop now uses Arc::get_mut to advance only when uniquely owned. If a link is shared, it stops and leaves the chain intact.

In both lincowcell and lincowcell_async, the drop loop now uses Arc::get_mut to advance only when uniquely owned. If a link is shared, it stops and leaves the chain intact.
@droideck
Copy link
Collaborator Author

The reason for this PR is that without it, concread crashes under heavy load when the NDN cache is enabled. The crash is triggered in the LinCowCellInner::drop chain during commit, where Arc::try_unwrap runs on a non‑unique link and hits an atomic compare_exchange failure.

So we need to use get_mut instead of try_unwrap here to avoid breaking the pinned chain while still preventing recursive drops.

@droideck droideck requested a review from Firstyear January 29, 2026 02:07
@Firstyear Firstyear merged commit 491451f into kanidm:master Jan 29, 2026
2 of 3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants