Getting Runtime Exception (SIGSEV)

I dont know what’s wrong with this code. Please help

#include<iostream>
#include<cstring>
using namespace std;
string str;
void increment(long j) {
	if(j<0) {
		str = '1' + str;
		return ;
	}
	if(str.at(j) =='9') {
		str.at(j) = '0';
		increment(j-1);
	}
	else str.at(j) = (char)((int)str.at(j) + 1);
}
void calc() {
	
	cin>>str;
	if(str == string(str.rbegin(),str.rend())) {
		increment(str.length()-1);
	}
	long j=str.length()-1;
	
	long i=0;
	while(i<j) {
		if(str.at(i) < str.at(j)) {
			increment(j-1);
		}
		str.at(j) = str.at(i);
		i++;j--;
	}
	cout<<str<<endl;
}
int main() 
{
	str = "";
	int T;
	
	cin>>T;
	for(int i=0;i<T;i++) calc();
	return 0;
}