KinesisVideoStream GetMedia gets stuck if gstreaming is pushing data simultaneously
- Lingua principale
- C++
- Stelle
- 2.2k
- Fork
- 1.2k
- Merge medio
- 4g 11h
- PR unite (30g)
- 13
Descrizione
### Describe the bug
I am finding that both GetMediaAsync as well as GetMedia get blocked if I am simultaneously running gstreamer plugin to push the media from the camera. It works fine if I stop the gstreamer session.
Here is the stack where it is stuck:
```
libc.so.6!__GI___poll(struct pollfd * fds, nfds_t nfds, int timeout) (/build/glibc-SzIz7B/glibc-2.31/sysdeps/unix/sysv/linux/poll.c:29)
libcurl.so.4![Unknown/Just-In-Time compiled code] (Unknown Source:0)
libcurl.so.4!curl_multi_poll (Unknown Source:0)
libcurl.so.4!curl_easy_perform (Unknown Source:0)
libaws-cpp-sdk-core.so!Aws::Http::CurlHttpClient::MakeRequest(const Aws::Http::CurlHttpClient * this, const std::shared_ptr & request, Aws::Utils::RateLimits::RateLimiterInterface * readLimiter, Aws::Utils::RateLimits::RateLimiterInterface * writeLimiter) (/home/pankaj/.cache/bazel/_bazel_pankaj/4eb02f1e029b42dcd6697fd7cb32fd6c/sandbox/linux-sandbox/1061/execroot/brockwood/external/com_github_aws_aws_sdk_cpp/aws-cpp-sdk-core/source/http/curl/CurlHttpClient.cpp:731)
libaws-cpp-sdk-core.so!Aws::Client::AWSClient::AttemptOneRequest(const Aws::Client::AWSClient * this, const std::shared_ptr & httpRequest, const Aws::AmazonWebServiceRequest & request, const char * signerName, const char * signerRegionOverride, const char * signerServiceNameOverride) (/home/pankaj/.cache/bazel/_bazel_pankaj/4eb02f1e029b42dcd6697fd7cb32fd6c/sandbox/linux-sandbox/1061/execroot/brockwood/external/com_github_aws_aws_sdk_cpp/aws-cpp-sdk-core/source/client/AWSClient.cpp:499)
libaws-cpp-sdk-core.so!Aws::Client::AWSClient::AttemptExhaustively(const Aws::Client::AWSClient * this, const Aws::Http::URI & uri, const Aws::AmazonWebServiceRequest & request, Aws::Http::HttpMethod method, const char * signerName, const char * signerRegionOverride, const char * signerServiceNameOverride) (/home/pankaj/.cache/bazel/_bazel_pankaj/4eb02f1e029b42dcd6697fd7cb32fd6c/sandbox/linux-sandbox/1061/execroot/brockwood/external/com_github_aws_aws_sdk_cpp/aws-cpp-sdk-core/source/client/AWSClient.cpp:257)
libaws-cpp-sdk-core.so!Aws::Client::AWSClient::MakeRequestWithUnparsedResponse(const Aws::Client::AWSClient * this, const Aws::Http::URI & uri, const Aws::AmazonWebServiceRequest & request, Aws::Http::HttpMethod method, const char * signerName, const char * signerRegionOverride, const char * signerServiceNameOverride) (/home/pankaj/.cache/bazel/_bazel_pankaj/4eb02f1e029b42dcd6697fd7cb32fd6c/sandbox/linux-sandbox/1061/execroot/brockwood/external/com_github_aws_aws_sdk_cpp/aws-cpp-sdk-core/source/client/AWSClient.cpp:575)
libaws-cpp-sdk-kinesis-video-media.so!Aws::KinesisVideoMedia::KinesisVideoMediaClient::GetMedia(const Aws::KinesisVideoMedia::KinesisVideoMediaClient * this, const Aws::KinesisVideoMedia::Model::GetMediaRequest & request) (/home/pankaj/.cache/bazel/_bazel_pankaj/4eb02f1e029b42dcd6697fd7cb32fd6c/sandbox/linux-sandbox/1061/execroot/brockwood/external/com_github_aws_aws_sdk_cpp/aws-cpp-sdk-kinesis-video-media/source/KinesisVideoMediaClient.cpp:102)
libaws-cpp-sdk-kinesis-video-media.so!Aws::KinesisVideoMedia::KinesisVideoMediaClient::GetMediaAsyncHelper(Aws::KinesisVideoMedia::Model::GetMediaRequest const&, std::function, std::shared_ptr const&)> const&, std::shared_ptr const&) const(const Aws::KinesisVideoMedia::KinesisVideoMediaClient * this, const Aws::KinesisVideoMedia::Model::GetMediaRequest & request, const Aws::KinesisVideoMedia::GetMediaResponseReceivedHandler & handler, const std::shared_ptr & context) (/home/pankaj/.cache/bazel/_bazel_pankaj/4eb02f1e029b42dcd6697fd7cb32fd6c/sandbox/linux-sandbox/1061/execroot/brockwood/external/com_github_aws_aws_sdk_cpp/aws-cpp-sdk-kinesis-video-media/source/KinesisVideoMediaClient.cpp:120)
libaws-cpp-sdk-kinesis-video-media.so!Aws::KinesisVideoMedia::KinesisVideoMediaClient::GetMediaAsync(Aws::KinesisVideoMedia::Model::GetMediaRequest const&, std::function, std::shared_ptr const&)> const&, std::shared_ptr const&) const::$_2::operator()() const(const class {...} * this) (/home/pankaj/.cache/bazel/_bazel_pankaj/4eb02f1e029b42dcd6697fd7cb32fd6c/sandbox/linux-sandbox/1061/execroot/brockwood/external/com_github_aws_aws_sdk_cpp/aws-cpp-sdk-kinesis-video-media/source/KinesisVideoMediaClient.cpp:115)
```
### Expected Behavior
The GetMedia call should return successfully and return the Stream.
### Current Behavior
API gets blocked.
### Reproduction Steps
- Run the gstreamer command to push the media to the kinesis video stream. The command line that I am using is:
gst-launch-1.0 v4l2src do-timestamp=TRUE device=/dev/video0 ! image/jpeg ! jpegdec ! x264enc tune=zerolatency ! h264parse ! video/x-h264,stream-format=avc,alignment=au ! kvssink stream-name="" storage-size=512 access-key="" secret-key="" aws-region="us-west-2"
- Run a sample to get call the GetMediaAsync or GetMedia.
The call will not return until the gstreamer session is canceled.
### Possible Solution
_No response_
### Additional Information/Context
_No response_
### AWS CPP SDK version used
1.9.264
### Compiler and Version used
Ubuntu clang version 14.0.6-++20221029082011+f28c006a5895-1~exp1~20221029202041.162 Target: x86_64-pc-linux-gnu Thread model: posix
### Operating System and version
Ubuntu 20.04
Guida per i contributori
Apri la guida per i contributori
Direzione di ricerca
Riproduci il blocco con il comando gst-launch-1.0 indicato mentre chiami GetMedia o GetMediaAsync. Poi esamina CurlHttpClient.cpp, AWSClient.cpp e KinesisVideoMediaClient.cpp nelle posizioni dello stack mostrate. Il lavoro è completato quando la chiamata a GetMedia restituisce correttamente mentre gstreamer continua a inviare contenuti multimediali.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- aws, cpp
- Ambito
- api, cloud
- Tipo di issue
- Bug
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Stato di attività
- Ferma
- Chiarezza
- Abbastanza chiara
- Idoneità per principianti
- 35/100