오늘 멀쩡하게 돌아가던 코드에서 std::length_error 예외가 발생해서 원인을 알아보았습니다.
std::length_error는 vector, string에서 발생하는 예외이고 string의 경우 std::string::max_size() 보다 큰 문자열을 할당하려고 했을 때 발생한다고 합니다.
디버그를 해보니 멀쩡한 string객체를 string::operator = 에 넘기는데 파라메터로 넘기기 전의 string객체를 보면 정상이고 파라메터로 넘어온 string 객체는 쓰레기 값으로 채워져 있었습니다.
해결방법은 프로젝트를 Cleanup 하고 다시 빌드하면 됩니다.
string 이 포함된 obj가 어떠한 이유로 빌드가 제대로 되지 않을 때 발생하는 문제였습니다. 일부 obj는 최신이고 일부 obj는 예전 버전으로 빌드된 상태에서 link가 이루어지고 실행이 되면 이런 이상한 상태가 되어 버립니다. 이런 문제로 시간을 버리다니... ㅠㅠ