1. 현상

 

컴파일에서 문제는 없지만 런타임에서 AWS SDK를 사용하는 도중에 aws-cpp-sdk-core.dll에서 Assertion failed가 발생합니다. 

 

 

위와 같은 화면과 함께 실행이 중단되며 IDE에 별도의 오류는 찍혀있지 않습니다. 해당 오류는 Aws::Auth::AWSCredentials, Aws::S3::S3Client를 생성할 때 발생했습니다.

 

 

 

2. 원인 및 수정

 

aws-sdk-cpp GitHub의 Issue에서 원인과 해결방법을 찾을 수 있었습니다: Assertion failed: (s_HttpClientFactory), function CreateHttpRequest

 

Assertion failed: (s_HttpClientFactory), function CreateHttpRequest · Issue #778 · aws/aws-sdk-cpp

I use Cognito libs in my app and use blocking calls from my custom threads. Application is crashing when I it is closed before active request has completed. Assertion failed: (s_HttpClientFactory),...

github.com

 

Bu11etmagnet의 멘션처럼 cpp에서 aws-sdk를 사용하기 위해서는 먼저 InitAPI를 호출해야만 합니다. InitAPI를 호출하지 않고 aws-sdk를 사용하려고 했기 때문에 위와 같은 오류가 발생했습니다. aws-sdk 사용에 앞서 다음 코드를 수행해 주시면 됩니다.

 

Aws::SDKOptions awsOptions;
// ...
Aws::InitAPI(awsOptions);
// ...
Aws::ShutdownAPI(awsOptions);

 

awsOption를 먼저 선언 후 aws-sdk를 사용하기 전에 IniAPI를 호출합니다. 모든 API 사용이 끝난 뒤 더 이상 사용하지 않을 땐 ShutdownAPI를 호출해 마무리하면 됩니다.

 

 

 

 

 

반응형

+ Recent posts