This is due to the number of locks being present in Cc (Shared cache map, VACB, master lock) and the way they are locked.
We often see the scenario:
- Lock master, lock shared, lock VACB
- Release shared, release master
- Lock master, lock shared
- Release VACB
- Release shared
- Release master
The problem is that, it's an unlocking in disorder and if someone else tries to perform using the same path, then, we have an issue if it can lock master & shared, but not VACB and if VACB tries to acquire master & shared to release VACB (this is what we call, a deadlock ).