Aws C ++ SDK Ошибка потока данных Kinesis при использовании функций SetStreamName и SetPartitionKey в Linux - PullRequest
0 голосов
/ 15 апреля 2020

Описание проблемы

Я включил 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)
...