Я передаю векторный указатель на другую функцию, которая передает данные с помощью этого указателя:
void foo(vector<pair<int,int>> * vp){
vp->push_back(pair<int,int>(1,1)); //causes segfault
}
void bar(vector<pair<int,int>> *vp = NULL){
foo(vp);
}
Push_back вызывает segfault.