-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Description
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<Aws::Http::HttpRequest> & 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<Aws::Http::HttpRequest> & 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<void (Aws::KinesisVideoMedia::KinesisVideoMediaClient const*, Aws::KinesisVideoMedia::Model::GetMediaRequest const&, Aws::Utils::Outcome<Aws::KinesisVideoMedia::Model::GetMediaResult, Aws::KinesisVideoMedia::KinesisVideoMediaError>, std::shared_ptr<Aws::Client::AsyncCallerContext const> const&)> const&, std::shared_ptr<Aws::Client::AsyncCallerContext const> const&) const(const Aws::KinesisVideoMedia::KinesisVideoMediaClient * this, const Aws::KinesisVideoMedia::Model::GetMediaRequest & request, const Aws::KinesisVideoMedia::GetMediaResponseReceivedHandler & handler, const std::shared_ptr<Aws::Client::AsyncCallerContext const> & 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<void (Aws::KinesisVideoMedia::KinesisVideoMediaClient const*, Aws::KinesisVideoMedia::Model::GetMediaRequest const&, Aws::Utils::Outcome<Aws::KinesisVideoMedia::Model::GetMediaResult, Aws::KinesisVideoMedia::KinesisVideoMediaError>, std::shared_ptr<Aws::Client::AsyncCallerContext const> const&)> const&, std::shared_ptr<Aws::Client::AsyncCallerContext const> 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="<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-1exp120221029202041.162 Target: x86_64-pc-linux-gnu Thread model: posix
Operating System and version
Ubuntu 20.04