aws / aws/aws-sdk-cpp

KinesisVideoStream GetMedia gets stuck if gstreaming is pushing data simultaneously

Offen
#2,203 2 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
bug p2
Vorherrschende Sprache
C++
Sterne
2.2k
Forks
1.2k
Ø Merge
4 T. 11 Std.
Gemergte PRs (30 T.)
13

Beschreibung

### 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

Beitragsleitfaden

Beitragsleitfaden öffnen

Rechercherichtung

Reproduziere den Fehler mit dem angegebenen gst-launch-1.0-Befehl, während du GetMedia oder GetMediaAsync aufrufst. Untersuche anschließend CurlHttpClient.cpp, AWSClient.cpp und KinesisVideoMediaClient.cpp an den im Stack angezeigten Stellen. Als erledigt gilt die Aufgabe, wenn der Aufruf von GetMedia erfolgreich zurückkehrt, während gstreamer weiterhin Medien überträgt.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
aws, cpp
Bereich
api, cloud
Issue-Typ
Bug
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
35/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.