Closed alan-willard-simplisafe closed 1 year ago
I do have a core dump available, but it is quite large, let me know the preferred way I can make that available, thanks.
Hello, could you please add
-DCMAKE_BUILD_TYPE=Debug
To your CMake command so we could get line numbers in the gdb backtrace? additionally please use
bt -full
So we can see variables with the added debug symbols, thank you.
Additional Information
(gdb) bt -full
#0 0x0000ffff8c7aabdc in curlCompleteSyncPython Exception <class 'gdb.MemoryError'>: Cannot access memory at address 0xffff83f5d678
(pCurlResponse=#1 0x0000ffff8c7a2db0 in curlCallApi (pCurlRequest=0xffff83fda3a0) at /opt/amazon-kinesis-video-streams-producer-sdk-cpp/dependency/libkvscproducer/kvscproducer-src/src/source/CurlApiCallbacks.c:650
__status = 2349079808
retStatus = 0
pCurlResponse = 0xffff8cde22a0
__FUNCTION__ = "curlCallApi"
#2 0x0000ffff8c7a4eb4 in describeStreamCurlHandler (arg=0xffff83fda3a0) at /opt/amazon-kinesis-video-streams-producer-sdk-cpp/dependency/libkvscproducer/kvscproducer-src/src/source/CurlApiCallbacks.c:1339
__status = 0
retStatus = 0
pCurlRequest = 0xffff83fda3a0
pCurlApiCallbacks = 0xffff8c0512e0
pCallbacksProvider = 0xffff8d02e9f0
pCurlResponse = 0x0
pResponseStr = 0x0
parser = {pos = 0, toknext = 0, toksuper = 0}
tokens = {{type = JSMN_UNDEFINED, start = 0, end = 0, size = 0} <repeats 100 times>}
i = 0
strLen = 0
resultLen = 0
tokenCount = 0
retention = 0
jsonInStreamDescription = 0
requestTerminating = 0
streamDescription = {version = 0, deviceName = '\000' <repeats 128 times>, streamName = '\000' <repeats 256 times>, contentType = '\000' <repeats 128 times>, updateVersion = '\000' <repeats 64 times>, streamArn = '\000' <repeats 2048 times>, streamStatus = STREAM_STATUS_CREATING, creationTime = 0, retention = 0, kmsKeyId = '\000' <repeats 2048 times>}
streamHandle = 0
callResult = SERVICE_CALL_RESULT_NOT_SET
__func__ = "describeStreamCurlHandler"
__FUNCTION__ = "describeStreamCurlHandler"
#3 0x0000ffff8d5b69a4 in () at /lib/ld-musl-aarch64.so.1
#4 0x0000ffff83fa7000 in ()
(gdb) info sharedlibrary
From To Syms Read Shared Object Library
0x0000ffff8d56c5a0 0x0000ffff8d5c0f70 Yes (*) /lib/ld-musl-aarch64.so.1
0x0000ffff8d454820 0x0000ffff8d4f7ff0 Yes (*) /usr/lib/libgstreamer-1.0.so.0
0x0000ffff8d30fdc0 0x0000ffff8d385e30 Yes (*) /usr/lib/libglib-2.0.so.0
0x0000ffff8d2d2e50 0x0000ffff8d2d8204 Yes (*) /usr/lib/libintl.so.8
0x0000ffff8d26ed60 0x0000ffff8d298260 Yes (*) /usr/lib/libgobject-2.0.so.0
0x0000ffff8d23f2a0 0x0000ffff8d23ffb8 Yes (*) /usr/lib/libgmodule-2.0.so.0
0x0000ffff8d19f4d0 0x0000ffff8d2043bc Yes (*) /usr/lib/libpcre2-8.so.0
0x0000ffff8d17dc20 0x0000ffff8d18235c Yes (*) /usr/lib/libffi.so.8
0x0000ffff8d13b700 0x0000ffff8d141060 Yes (*) /usr/lib/gstreamer-1.0/libgstvideotestsrc.so
0x0000ffff8d0a1de0 0x0000ffff8d0fc760 Yes (*) /usr/lib/libgstvideo-1.0.so.0
0x0000ffff8cd67210 0x0000ffff8cda9f80 Yes (*) /usr/lib/libgstbase-1.0.so.0
0x0000ffff8ccd0790 0x0000ffff8cd2246c Yes (*) /usr/lib/liborc-0.4.so.0
0x0000ffff8d069560 0x0000ffff8d06ebbc Yes (*) /usr/lib/gstreamer-1.0/libgstx264.so
0x0000ffff8cc832e0 0x0000ffff8cc9bd94 Yes (*) /usr/lib/libgstpbutils-1.0.so.0
0x0000ffff8c9d5140 0x0000ffff8cb3b534 Yes (*) /usr/lib/libx264.so.164
0x0000ffff8c958de0 0x0000ffff8c993e20 Yes (*) /usr/lib/libgstaudio-1.0.so.0
0x0000ffff8c901140 0x0000ffff8c91b0dc Yes (*) /usr/lib/libgsttag-1.0.so.0
0x0000ffff8d036570 0x0000ffff8d043258 Yes (*) /lib/libz.so.1
0x0000ffff8c8bb010 0x0000ffff8c8ce930 Yes /opt/amazon-kinesis-video-streams-producer-sdk-cpp/build/libgstkvssink.so
0x0000ffff8c846180 0x0000ffff8c859690 Yes /opt/amazon-kinesis-video-streams-producer-sdk-cpp/build/libKinesisVideoProducer.so
0x0000ffff8c79b310 0x0000ffff8c7ecea0 Yes /opt/amazon-kinesis-video-streams-producer-sdk-cpp/build/dependency/libkvscproducer/kvscproducer-src/libcproducer.so
0x0000ffff8c71b750 0x0000ffff8c757920 Yes /opt/amazon-kinesis-video-streams-producer-sdk-cpp/open-source/local/lib/liblog4cplus-1.2.so.5
0x0000ffff8c565af0 0x0000ffff8c66d01c Yes (*) /usr/lib/libstdc++.so.6
0x0000ffff8c480aa0 0x0000ffff8c48f064 Yes (*) /usr/lib/libgcc_s.so.1
0x0000ffff8c241000 0x0000ffff8c3a7890 Yes /opt/amazon-kinesis-video-streams-producer-sdk-cpp/open-source/local/lib/libcrypto.so.1.1
0x0000ffff8c11fe40 0x0000ffff8c17e9ac Yes /opt/amazon-kinesis-video-streams-producer-sdk-cpp/open-source/local/lib/libcurl.so
0x0000ffff8c090c20 0x0000ffff8c0d9ca0 Yes /opt/amazon-kinesis-video-streams-producer-sdk-cpp/open-source/local/lib/libssl.so.1.1
(*): Shared library is missing debugging information.
Hi,
We're currently investigating this issue. At this time we've found that the issue is unrelated to kvssink or gstreamer, and there is actually a build issue with alpine when constructing libcproducer.so . The samples in our producer-c reproduce the same issue. The segfault occurs because the memory address of the function is inaccessible memory.
We're still looking for solutions at this time.
Hello,
We've resolved the issue in a PR that's undergoing review. The issue is due to the smaller default stack size of Alpine Linux. You'll need to call cmake -DCONSTRAINED_DEVICE=ON ..
with the fix to get around this problem.
Thanks for the update! Will give this a shot at my earliest opportunity
Looks like this issue is resolved, closing this issue. @alan-willard-simplisafe if you still see the issue, please re-open.
Logging
Output when running
gst-launch-1.0
with thekvssink
GDB backtrace
lsof gst-launch-1.0 process
ldd of libgstkvssink.so
ldd of libcproducer.so
ldd of libcurl.so
Describe the bug This is the same issue previously reported in #939. I'd like to use Alpine based images for our deployment, and while the build is successful, and
gst-inspect-1.0 kvssink
works, at runtime the process fails with a segfault as detailed above in the logs. I also included any other relevant details I could dig up. It appears that the binaries forkvssink
are linked with the libcurl used in the SDK. I included my Dockerfile in the Open source Building section below.To Reproduce Steps to reproduce the behavior:
docker build . -t kvssink:latest
sudo docker run -it --network="host" kvssink:latest /bin/sh
apk add gstreamer-tools
and optionallyapk add gdb
gst-launch-1.0 -v videotestsrc ! x264enc ! kvssink stream-name=<stream> aws-region=<region> access-key=<key> secret-key=<key>
Expected behavior The pipeline should run and sink test video to KVS (or indicate connection error if valid region/keys are not provided)
SDK version number Version
3.3.1
of the SDK (will try the latest release) Alpine3.17
Open source building
Dockerfile
Screenshots n/a
Platform (please complete the following information):
Additional context n/a