It always strikes me as unnatural to assert (or ProgrammingError) something that is out of our control. If for whatever reason pthread_mutex_lock() returns an error, then I don't see it is as our programming error. 

Personally, I would just LOG_LEVEL_WARN, in exactly the same way I'd do if we were using error-checking mutexes. This is minor so I didn't bother so far, it can always be massively changed in a separate commit.