Описание проблемы
Я включил AWS C ++ SDK в свой существующий проект. Он отлично работает в Windows. У меня было несколько проблем с компиляцией в Linux, но в итоге я смог успешно создать сборку.
Но когда я запускаю приложение, оно вызывает сбой при генерации ядра, информация об ошибках присутствует внизу.
Анализ
Я помещаю некоторые журналы в файл Speci c и выясняю, что строка, в которой я задаю имя и раздел потока , и раздел клавиша вызывает кражу sh.
kinesis_request.SetStreamName ("test_stream");
kinesis_request.SetPartitionKey ("159000000");
Я пробовал несколько способов передачи значения, такого как строка, в aws :: преобразование строки, строки в const char *, et c и даже жестко запрограммировали значение, как это видно из фрагмента кода ниже, но все равно происходит сбой.
Если я прокомментирую эти 2 строки, приложение не обработает sh, оно выполнит рукопожатие с кинезисом и дает правильную ошибку проверки (как и ожидалось, так как имя потока и ключ раздела не установлены). Переменная k_out получает его и переходит в другое условие, чтобы показать ошибку.
Я также попробовал флаг -g и gdb для того же, но не получил никакой полезной помощи.
Любая помощь будет очень признательна.
Эти файлы заголовков включены в мой проект, относящиеся к AWS.
#include <aws/core/Aws.h>
#include <aws/core/utils/Outcome.h>
#include <aws/kinesis/KinesisClient.h>
#include <aws/kinesis/model/PutRecordRequest.h>
#include <aws/kinesis/model/Record.h>
#include <aws/core/utils/logging/ConsoleLogSystem.h>
Функция отправки данных в поток данных Kinesis .
встроенный void sendToKinesis (const string ®ion, std :: string streamName, const unistr & sData, std :: string sRunId) {
std::string sValue = "";
sData.toUTF8String(sValue);
Aws::SDKOptions options;
Aws::InitAPI(options);
{
//const Aws::String kStream(streamName.c_str());
const Aws::String kStream (streamName.c_str(),streamName.size());
const Aws::String kRunId(sRunId.c_str(), sRunId.size());
Aws::Client::ClientConfiguration clientConfig;
clientConfig.region = region.c_str();
typedef Aws::Utils::Array<unsigned char> ByteBuffer;
Aws::Kinesis::KinesisClient kinesis_client(clientConfig);
Aws::Kinesis::Model::PutRecordRequest kinesis_request;
//kinesis_request.SetStreamName(kStream.c_str());
Log::glog(Log::Warning, kStream.c_str());
kinesis_request.SetData(ByteBuffer((unsigned char *)sValue.c_str(), sValue.length()));
//kinesis_request.SetStreamName(kStream.c_str());
kinesis_request.SetStreamName("test_stream");
//kinesis_request.SetPartitionKey(sRunId.c_str());
kinesis_request.SetPartitionKey("159000000");
auto k_out = kinesis_client.PutRecord(kinesis_request);
if (k_out.IsSuccess())
{
//Log::glog(Log::Warning, "sent!");
}
else
{
#undef GetMessage
Log::glog(Log::Warning, unistr("Kinesis error:") + k_out.GetError().GetMessage().c_str());
}
}
Aws::ShutdownAPI(options);
}
ОШИБКА: [ОШИБКА 30012] Внутренняя: преждевременный выход из режима работы (* glib c обнаружено *
webql -1828233924 rt (test.wql): free(): invalid pointer: 0x00007f62bbfd0260
*** ======= Backtrace: =========
/lib64/libc.so.6(+0x75e5e)[0x7f62baad3e5e]
/lib64/libc.so.6(+0x78cad)[0x7f62baad6cad]
webql -1828233924 rt (test.wql)[0x4b6366] webql -1828233924 rt (test.wql)[0x4ca0ae] webql -1828233924 rt (test.wql)[0x4e017b]
webql -1828233924 rt (test.wql)[0x4e1682] webql -1828233924 rt (test.wql)[0x45e195] webql -1828233924 rt (test.wql)[0x56ccab]
webql -1828233924 rt (test.wql)[0x5bc603] webql -1828233924 rt (test.wql)[0x53862e] webql -1828233924 rt (test.wql)[0x43400b]
/lib64/libc.so.6(__libc_start_main+0x100)[0x7f62baa7cd20]
webql -1828233924 rt (test.wql)[0x422b49]
======= Memory map: ========
00400000-006c6000 r-xp 00000000 ca:60 4206809
/archive/webql/build/al/6.3.5.0002-1586933245/base/dist/alr/bin/wqlrt 008c6000-008d5000 rw-p 002c6000 ca:60 4206809
/archive/webql/build/al/6.3.5.0002-1586933245/base/dist/alr/bin/wqlrt 008d5000-008d8000 rw-p 00000000 00:00 0 00ba3000-01364000 rw-p 00000000 00:00 0
[heap] 7f6298000000-7f6298021000 rw-p 00000000 00:00 0 7f6298021000-7f629c000000 ---p 00000000 00:00 0 7f629c000000-7f629c021000 rw-p 00000000 00:00 0 7f629c021000-7f62a0000000
---p 00000000 00:00 0 7f62a0000000-7f62a0021000 rw-p 00000000 00:00 0 7f62a0021000-7f62a4000000 ---p 00000000 00:00 0 7f62a4000000-7f62a403d000 rw-p 00000000 00:00 0
7f62a403d000-7f62a8000000 ---p 00000000 00:00 0 7f62a8000000-7f62a8021000 rw-p 00000000 00:00 0 7f62a8021000-7f62ac000000 ---p 00000000 00:00 0 7f62add49000-7f62add4e000
r-xp 00000000 ca:01 265096 /lib64/libnss_dns-2.12.so 7f62add4e000-7f62adf4d000 ---p 00005000 ca:01 265096
/lib64/libnss_dns-2.12.so 7f62adf4d000-7f62adf4e000 r--p 00004000 ca:01 265096
/lib64/libnss_dns-2.12.so 7f62adf4e000-7f62adf4f000 rw-p 00005000 ca:01 265096
/lib64/libnss_dns-2.12.so 7f62adf4f000-7f62adf5c000 r-xp 00000000 ca:01 290475
/lib64/libnss_files-2.12.so 7f62adf5c000-7f62ae15b000 ---p 0000d000 ca:01 290475
/lib64/libnss_files-2.12.so 7f62ae15b000-7f62ae15c000 r--p 0000c000 ca:01 290475
/lib64/libnss_files-2.12.so 7f62ae15c000-7f62ae15d000 rw-p 0000d000 ca:01 290475
/lib64/libnss_files-2.12.so 7f62ae15d000-7f62ae15e000 ---p 00000000 00:00 0 7f62ae15e000-7f62aeb5e000 rw-p 00000000 00:00 0
7f62aeb5e000-7f62aeb5f000 ---p 00000000 00:00 0 7f62aeb5f000-7f62af55f000 rw-p 00000000 00:00 0 7f62af55f000-7f62af560000 ---p 00000000 00:00 0
7f62af560000-7f62aff61000 rw-p 00000000 00:00 0 7f62aff61000-7f62aff62000 ---p 00000000 00:00 0 7f62aff62000-7f62b0962000 rw-p 00000000 00:00 0
7f62b0962000-7f62b67f7000 r--p 00000000 ca:01 293398
/usr/lib/locale/locale-archive 7f62b67f7000-7f62b6814000 r-xp 00000000 ca:01 265488
/lib64/libselinux.so.1 7f62b6814000-7f62b6a13000 ---p 0001d000 ca:01 265488
/lib64/libselinux.so.1 7f62b6a13000-7f62b6a14000 r--p 0001c000 ca:01 265488
/lib64/libselinux.so.1 7f62b6a14000-7f62b6a15000 rw-p 0001d000 ca:01 265488
/lib64/libselinux.so.1 7f62b6a15000-7f62b6a16000 rw-p 00000000 00:00 0 7f62b6a16000-7f62b6a3f000 r-xp 00000000 ca:01 295561
/usr/lib64/libnssutil3.so 7f62b6a3f000-7f62b6c3e000 ---p 00029000 ca:01 295561
/usr/lib64/libnssutil3.so 7f62b6c3e000-7f62b6c45000 r--p 00028000 ca:01 295561
/usr/lib64/libnssutil3.so 7f62b6c45000-7f62b6c46000 rw-p 0002f000 ca:01 295561
/usr/lib64/libnssutil3.so 7f62b6c46000-7f62b6d85000 r-xp 00000000 ca:01 295571
/usr/lib64/libnss3.so 7f62b6d85000-7f62b6f84000 ---p 0013f000 ca:01 295571
/usr/lib64/libnss3.so 7f62b6f84000-7f62b6f8a000 r--p 0013e000 ca:01 295571
/usr/lib64/libnss3.so 7f62b6f8a000-7f62b6f8c000 rw-p 00144000 ca:01 295571
/usr/lib64/libnss3.so 7f62b6f8c000-7f62b6f8e000 rw-p 00000000 00:00 0 7f62b6f8e000-7f62b6fb7000 r-xp 00000000 ca:01 291126
/usr/lib64/libsmime3.so 7f62b6fb7000-7f62b71b6000 ---p 00029000 ca:01 291126
/usr/lib64/libsmime3.so 7f62b71b6000-7f62b71ba000 r--p 00028000 ca:01 291126
/usr/lib64/libsmime3.so 7f62b71ba000-7f62b71bb000 rw-p 0002c000 ca:01 291126
/usr/lib64/libsmime3.so 7f62b71bb000-7f62b720f000 r-xp 00000000 ca:01 295573
/usr/lib64/libssl3.so 7f62b720f000-7f62b740e000 ---p 00054000 ca:01 295573
/usr/lib64/libssl3.so 7f62b740e000-7f62b7412000 r--p 00053000 ca:01 295573)