What happens in the overflow case is the difference between seq and pos+1 becomes negative and pop fails because it thinks the queue is empty so no progress can be made after overflow has occurred. I have an idea for how to detect this case and allow it to continue to the CAS operation, but I'm not sure if it is safe and there might be other problems. I've emailed the author of the algorithm to ask for advice.