[삽질] runtime_error를 던질 때 segmentation fault 발생
CUDA에서 Texture Memory를 사용하기 위해서 cudaCreateTextureObject를 통해 cudaTextureObject를 생성하던 중에 계속해서 segmentation fault가 발생했습니다. 잘못된 메모리 접근이 있다고 생각해 이전의 malloc을 사용하는 부분과 memcy을 사용하는 부분을 확인해 보았지만 원인을 알 수 없었습니다. 그러던 중에 특별한 곳에서 원인을 찾을 수 있었습니다.
cudaError_t cudaStatus = cudaCreateTextureObject(&tex, &texRes, &texDescr, nullptr);
if (cudaStatus != cudaSuccess) {
throw std::runtime_error("cudaCreateTextureObject failed!");
}
현재 저는 cudaError값이 cudaSuccess가 아닐 시 무조건 runtime_error을 던지게 하여 프로그램을 중단시키고 이전에 할당했던 메모리들을 해제하게 하고 있습니다. 그런데 이std::runtime_error을 던질 때 segmentation fault가 발생하고 있었습니다.
현재 제 compiler는 gcc는 11.3.0이고 nvcc는 11.7.64이고 환경은 WSL - Ubuntu입니다.
관련하여 저와 비슷한 경험을 한 사람의 글을 찾을 수 있었지만, 원인과 해결법은 찾지 못했습니다.
c++ - Segfault when throwing std::runtime_error on Ubuntu Xenial with Rcpp - Stack Overflow
Segfault when throwing std::runtime_error on Ubuntu Xenial with Rcpp
I am having a very strange behavior with Rcpp together with libtorch. I have a file with 2 functions: #include <torch/torch.h> #include <Rcpp.h> // [[Rcpp::export]] void test_error...
stackoverflow.com