On a cursory test it seems OK to me. If the locks are both acquired NOQUEUE then I get AST routines delivered correctly for both (the second with EAGAIN status). With NOQUEUE, there is no second AST delivered because the second lock request is waiting because it is blocked by the first one. If you still think there's a problem, can you send me a small piece of sample code please ? patrick