Description
I'm trying to use the AWS SDK CPP S3 API from EC2 instance(Centos7) to get file from S3 bucket, but the program will always end up crashing. Please let me know if I do anything wrong with the following program:
string retrieve(const string& bucketName)
{
S3Client Client;
Aws::StringStream ss;
GetObjectRequest getObjectRequest;
Aws::String bucket(bucketName);
getObjectRequest.SetBucket(bucket);
getObjectRequest.SetKey("something.txt");
GetObjectOutcome getObjectOutcome = Client.GetObject(getObjectRequest);
ss.str("");
ss << getObjectOutcome.GetResult().GetBody().rdbuf();
return ss.str();
}
int main ( int argc, char** argv )
{
if ( argc < 2 )
{
cout<<"usage: "<< argv[0] <<" " << endl;
return 1;
}
string bucketName(argv[1]);
string txt(retrieve(bucketName));
cout << txt << endl;
return 0;
}
*** Error in `./retrieve': free(): invalid pointer: 0x00007f45c9921320 ***
======= Backtrace: =========
/lib64/libc.so.6(+0x7d1fd)[0x7f45c869d1fd]
./retrieve(_ZN3Aws6Client19ClientConfigurationD2Ev+0x333)[0x402dd3]
libaws-cpp-sdk-core.so(_ZN3Aws8Internal17EC2MetadataClientC1EPKcSt10shared_ptrIKNS_4Http17HttpClientFactoryEE+0x33a)[0x7f45c92619ea]
libaws-cpp-sdk-core.so(ZNSt14__shared_countILN9__gnu_cxx12_Lock_policyE2EEC2IN3Aws8Internal17EC2MetadataClientENS4_9AllocatorIS6_EEJEEESt19_Sp_make_shared_tagPT_RKT0_DpOT1+0x6b)[0x7f45c925a0fb]
libaws-cpp-sdk-core.so(_ZN3Aws4Auth34InstanceProfileCredentialsProviderC1El+0x9d)[0x7f45c9258fcd]
libaws-cpp-sdk-core.so(_ZN3Aws4Auth34DefaultAWSCredentialsProviderChainC1Ev+0x332)[0x7f45c925ac12]
libaws-cpp-sdk-s3.so(_ZN3Aws2S38S3ClientC1ERKNS_6Client19ClientConfigurationE+0xb8)[0x7f45c95e9cd8]
./retrieve[0x401f12]
./retrieve[0x402839]
/lib64/libc.so.6(__libc_start_main+0xf5)[0x7f45c8641af5]
./retrieve[0x401e19]
======= Memory map: ========
00400000-00405000 r-xp 00000000 ca:01 3077097 /home/centos/patches/retrieve
00604000-00605000 r--p 00004000 ca:01 3077097 /home/centos/patches/retrieve
00605000-00606000 rw-p 00005000 ca:01 3077097 /home/centos/patches/retrieve
00bda000-00bfb000 rw-p 00000000 00:00 0 [heap]
7f45c3fda000-7f45c3fdc000 r-xp 00000000 ca:01 1576 /usr/lib64/libfreebl3.so
7f45c3fdc000-7f45c41db000 ---p 00002000 ca:01 1576 /usr/lib64/libfreebl3.so
7f45c41db000-7f45c41dc000 r--p 00001000 ca:01 1576 /usr/lib64/libfreebl3.so
7f45c41dc000-7f45c41dd000 rw-p 00002000 ca:01 1576 /usr/lib64/libfreebl3.so
7f45c41dd000-7f45c4201000 r-xp 00000000 ca:01 15499 /usr/lib64/liblzma.so.5.0.99
7f45c4201000-7f45c4400000 ---p 00024000 ca:01 15499 /usr/lib64/liblzma.so.5.0.99
7f45c4400000-7f45c4401000 r--p 00023000 ca:01 15499 /usr/lib64/liblzma.so.5.0.99
7f45c4401000-7f45c4402000 rw-p 00024000 ca:01 15499 /usr/lib64/liblzma.so.5.0.99
7f45c4402000-7f45c4461000 r-xp 00000000 ca:01 125123 /usr/lib64/libpcre.so.1.2.0
7f45c4461000-7f45c4661000 ---p 0005f000 ca:01 125123 /usr/lib64/libpcre.so.1.2.0
7f45c4661000-7f45c4662000 r--p 0005f000 ca:01 125123 /usr/lib64/libpcre.so.1.2.0
7f45c4662000-7f45c4663000 rw-p 00060000 ca:01 125123 /usr/lib64/libpcre.so.1.2.0
7f45c4663000-7f45c466b000 r-xp 00000000 ca:01 15479 /usr/lib64/libcrypt-2.17.so
7f45c466b000-7f45c486a000 ---p 00008000 ca:01 15479 /usr/lib64/libcrypt-2.17.so
7f45c486a000-7f45c486b000 r--p 00007000 ca:01 15479 /usr/lib64/libcrypt-2.17.so
7f45c486b000-7f45c486c000 rw-p 00008000 ca:01 15479 /usr/lib64/libcrypt-2.17.so
7f45c486c000-7f45c489a000 rw-p 00000000 00:00 0
7f45c489a000-7f45c48bb000 r-xp 00000000 ca:01 125150 /usr/lib64/libselinux.so.1
7f45c48bb000-7f45c4abb000 ---p 00021000 ca:01 125150 /usr/lib64/libselinux.so.1
7f45c4abb000-7f45c4abc000 r--p 00021000 ca:01 125150 /usr/lib64/libselinux.so.1
7f45c4abc000-7f45c4abd000 rw-p 00022000 ca:01 125150 /usr/lib64/libselinux.so.1
7f45c4abd000-7f45c4abf000 rw-p 00000000 00:00 0
7f45c4abf000-7f45c4adb000 r-xp 00000000 ca:01 125876 /usr/lib64/libsasl2.so.3.0.0
7f45c4adb000-7f45c4cda000 ---p 0001c000 ca:01 125876 /usr/lib64/libsasl2.so.3.0.0
7f45c4cda000-7f45c4cdb000 r--p 0001b000 ca:01 125876 /usr/lib64/libsasl2.so.3.0.0
7f45c4cdb000-7f45c4cdc000 rw-p 0001c000 ca:01 125876 /usr/lib64/libsasl2.so.3.0.0
7f45c4cdc000-7f45c4cf2000 r-xp 00000000 ca:01 539598 /usr/lib64/libresolv-2.17.so
7f45c4cf2000-7f45c4ef2000 ---p 00016000 ca:01 539598 /usr/lib64/libresolv-2.17.so
7f45c4ef2000-7f45c4ef3000 r--p 00016000 ca:01 539598 /usr/lib64/libresolv-2.17.so
7f45c4ef3000-7f45c4ef4000 rw-p 00017000 ca:01 539598 /usr/lib64/libresolv-2.17.so
7f45c4ef4000-7f45c4ef6000 rw-p 00000000 00:00 0
7f45c4ef6000-7f45c4ef9000 r-xp 00000000 ca:01 125778 /usr/lib64/libkeyutils.so.1.5
7f45c4ef9000-7f45c50f8000 ---p 00003000 ca:01 125778 /usr/lib64/libkeyutils.so.1.5
7f45c50f8000-7f45c50f9000 r--p 00002000 ca:01 125778 /usr/lib64/libkeyutils.so.1.5
7f45c50f9000-7f45c50fa000 rw-p 00003000 ca:01 125778 /usr/lib64/libkeyutils.so.1.5
7f45c50fa000-7f45c5107000 r-xp 00000000 ca:01 539641 /usr/lib64/libkrb5support.so.0.1
7f45c5107000-7f45c5307000 ---p 0000d000 ca:01 539641 /usr/lib64/libkrb5support.so.0.1
7f45c5307000-7f45c5308000 r--p 0000d000 ca:01 539641 /usr/lib64/libkrb5support.so.0.1
7f45c5308000-7f45c5309000 rw-p 0000e000 ca:01 539641 /usr/lib64/libkrb5support.so.0.1
7f45c5309000-7f45c5310000 r-xp 00000000 ca:01 539600 /usr/lib64/librt-2.17.so
7f45c5310000-7f45c550f000 ---p 00007000 ca:01 539600 /usr/lib64/librt-2.17.so
7f45c550f000-7f45c5510000 r--p 00006000 ca:01 539600 /usr/lib64/librt-2.17.so
7f45c5510000-7f45c5511000 rw-p 00007000 ca:01 539600 /usr/lib64/librt-2.17.so
7f45c5511000-7f45c5526000 r-xp 00000000 ca:01 125153 /usr/lib64/libz.so.1.2.7
7f45c5526000-7f45c5725000 ---p 00015000 ca:01 125153 /usr/lib64/libz.so.1.2.7
7f45c5725000-7f45c5726000 r--p 00014000 ca:01 125153 /usr/lib64/libz.so.1.2.7
7f45c5726000-7f45c5727000 rw-p 00015000 ca:01 125153 /usr/lib64/libz.so.1.2.7
7f45c5727000-7f45c5776000 r-xp 00000000 ca:01 127437 /usr/lib64/libldap-2.4.so.2.10.2
7f45c5776000-7f45c5975000 ---p 0004f000 ca:01 127437 /usr/lib64/libldap-2.4.so.2.10.2
7f45c5975000-7f45c5977000 r--p 0004e000 ca:01 127437 /usr/lib64/libldap-2.4.so.2.10.2
7f45c5977000-7f45c5979000 rw-p 00050000 ca:01 127437 /usr/lib64/libldap-2.4.so.2.10.2
7f45c5979000-7f45c5987000 r-xp 00000000 ca:01 127435 /usr/lib64/liblber-2.4.so.2.10.2Aborted (core dumped)
Thanks,
Johnny