C++

[삽질] runtime_error를 던질 때 segmentation fault 발생

매운돌 2023. 2. 28. 04:06

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