There's a lot of information about this in this thread:
One of particular interest is that it works with rc1 but not rc2 or release. There were some changes to the code focusing on locking between rc1 and rc2:
It turns out this was due to a change in what was being locked on and conflicting locks fighting with each other. Simple one line fix and it's back to full working order. The fact that I changed it back needs to be evaluated as I do not understand the logic for changing it in the first place.