Pattern
Cross-Lock Deadlocks in Concurrency
cross-lock-deadlock-cycle
Threads or coroutines acquire multiple locks in conflicting orders (sometimes across processes and libraries), so each waits on the other and progress stops; attempts like per-process asyncio.Lock or Redis/CAS assumptions don’t break the cyclic wait.