Векто съезжает из-за того, что при добавлении айтемов в вектор тот может производит реаллокацию своего буфера. При этом полученные ранее итераторы становятся невалидными.
У тебя один поток добавляет айтем, другой — использует итератор, который после добавления становится невалидным.