linux平台使用aws s3 sdk(cpp)提供的TransferManager类上传数据时发生system_error resource deadlock avoided abort,进程意外终止。
从log来看下载已经完成,在执行完Aws::ShutdownAPI(options)进程退出(有时候在执行这个之前就结束了)。
Aws::SDKOptions options;
Aws::InitAPI(options);
{
Aws::Client::ClientConfiguration cfg;
cfg.executor = Aws::MakeShared<Aws::Utils::Threading::PooledThreadExecutor>(ALLOCATION_TAG, 3);
auto client = Aws::MakeShared<Aws::S3::S3Client>("S3Client", cred, cfg,
Aws::Client::AWSAuthV4Signer::PayloadSigningPolicy::Never, false);
auto executor = Aws::MakeShared<Aws::Utils::Threading::DefaultExecutor>(ALLOCATION_TAG);
Aws::Transfer::TransferManagerConfiguration transfer_config(executor.get());
// 启用md5、设置buffersize等
// ...
auto transfer_manager = Aws::Transfer::TransferManager::Create(transfer_config);
auto upload_handle = transfer_manager->UploadFile(file, bucket_name, object_name,
"binary/octet-stream", Aws::Map<Aws::String, Aws::String>());
upload_handle->WaitUntilFinished();
// ...
if (upload_handle->GetStatus() == Aws::Transfer::TransferStatus::COMPLETED) {
LOGI("UploadFile2 done");
}
}
Aws::ShutdownAPI(options);