Hmm... is my semaphore implementation bugged?