# RuntimeError: Lock is not acquired

- **ID:** `python/asyncio-lock-not-acquired`
- **Domain:** python
- **Category:** runtime_error
- **Verification:** ai_generated
- **Fix Rate:** 80%

## Root Cause

Calling lock.release() on an asyncio.Lock that is not currently held.

## Version Compatibility

| Version | Status | Introduced | Deprecated |
|---------|--------|------------|------------|
| 3.7 | active | — | — |
| 3.8 | active | — | — |

## Workarounds

1. **** (100% success)
   ```
   async with lock: ...
   ```
2. **** (95% success)
   ```
   await lock.acquire(); try: ... finally: lock.release()
   ```

## Dead Ends

- **** — acquire() is a coroutine; must be awaited. (90% fail)
- **** — It's a race condition; the lock may be released between check and release. (70% fail)
