Msgbroker - Deepstream

Please provide complete information as applicable to your setup.

• Hardware Platform (Jetson / GPU) - Jetson Development Nano
• DeepStream Version - 6.0.1
• JetPack Version (valid for Jetson only) - 4.6.1
• TensorRT Version - 8.2.1.9
• Issue Type( questions, new requirements, bugs) - questions

Hi, I downloaded the deepstream sdk-6.0.1 from the docker image nvcr.io/nvidia/deepstream-l4t:6.0.1-samples

and tried deepstream_yolo with yoloV8 model

with Redis, where Redis is running in separate docker, and from inside the deepstream sdk container, I can able to send the data through redis

In deepstream_app_config.txt file,


[source0]
enable=1
type=4
uri=rtsp://admin:admin123_@192.168.20.95:554
num-sources=1
gpu-id=0
cudadec-memtype=0

[sink0]
enable=1
type=6
sync=0
gpu-id=0
nvbuf-memory-type=0
msg-conv-payload-type=0
msg-conv-frame-interval=1
new-api=0
msg-broker-proto-lib=/opt/nvidia/deepstream/deepstream-6.0/lib/libhiredis.so
topic=deepstream_topic
msg-broker-conn-str=0.0.0.0;6379

and when starting the inference deepstream-app -c deepstream_app_config.txt

I got this error -

** ERROR: <main:707>: Failed to set pipeline to PAUSED
Quitting
ERROR from sink_sub_bin_sink1: GStreamer encountered a general supporting library error.
Debug info: /dvs/git/dirty/git-master_linux/deepstream/sdk/src/gst-plugins/gst-nvmsgbroker/gstnvmsgbroker.cpp(389): legacy_gst_nvmsgbroker_start (): /GstPipeline:pipeline/GstBin:sink_sub_bin1/GstNvMsgBroker:sink_sub_bin_sink1:
/opt/nvidia/deepstream/deepstream-6.0/lib/libhiredis.so: undefined symbol: nvds_msgapi_do_work
ERROR from sink_sub_bin_sink1: GStreamer error: state change failed and some element failed to post a proper error message with the reason for the failure.
Debug info: gstbasesink.c(5265): gst_base_sink_change_state (): /GstPipeline:pipeline/GstBin:sink_sub_bin1/GstNvMsgBroker:sink_sub_bin_sink1:
Failed to start
App run failed

one error on gstreamer and another is from gstnvmsgbroker showing undefined symbol: nvds_msgapi_do_work

>>>deepstream-app --version-all
deepstream-app version 6.0.1
DeepStreamSDK 6.0.1
CUDA Driver Version: 10.2
CUDA Runtime Version: 10.2
TensorRT Version: 8.2
cuDNN Version: 8.2
libNVWarp360 Version: 2.0.1d3

could you please share what is this error and how to solve this, thanks

UPDATE:

[sink0]
enable=1
type=6
sync=0
gpu-id=0
nvbuf-memory-type=0
msg-conv-payload-type=0
msg-conv-frame-interval=1
new-api=1
msg-broker-proto-lib=/opt/nvidia/deepstream/deepstream-6.0/lib/libnvds_redis_proto.so
msg-broker-conn-str=0.0.0.0;6379;deepstream_topic

If I use msg-broker-proto-lib=/opt/nvidia/deepstream/deepstream-6.0/lib/libnvds_redis_proto.so, then this error occurs -

(deepstream-app:2822): GLib-CRITICAL **: 22:20:41.631: g_strchug: assertion 'string != NULL' failed

(deepstream-app:2822): GLib-CRITICAL **: 22:20:41.631: g_strchomp: assertion 'string != NULL' failed

** (deepstream-app:2822): CRITICAL **: 22:20:41.740: NvDsMsg2pCtx* nvds_msg2p_ctx_create(const gchar*, NvDsPayloadType): assertion 'file' failed
** ERROR: <main:707>: Failed to set pipeline to PAUSED
Quitting
App run failed

Hello,

I don’t know if it will help.

I can use it using mqtt and my sink is configured like :

[sink4]
enable = 0
type = 6
msg-conv-config = /path/msgconv_config.txt
msg-conv-payload-type = 257
msg-broker-proto-lib = /opt/nvidia/deepstream/deepstream/lib/libnvds_mqtt_proto.so
msg-broker-conn-str = 192.168.8.210;1883;deepstream
msg-conv-msg2p-new-api = 1
msg-conv-frame-interval = 20

Have you tried specifying msg-conv-config config file path ?

Hi, @henri , thanks for writing back

I used this parameter msg-conv-config=dstest5_msgconv_sample_config.txt

and got the same error, and then i tried with export GST_DEBUG=4

then got this error -

** Message: 22:43:19.030: Failed to load file: No such file or directory
Error in creating instance
0:00:00.227224058  2857      0x70ec600 ERROR              nvmsgconv gstnvmsgconv.c:442:gst_nvmsgconv_start:<sink_sub_bin_transform1> unable to create instance

could you please share me what to define in this file = dstest5_msgconv_sample_config.txt, for now i tried with just adding this line in the config file

thanks

Hi, I shared the logs when running this command - deepstream-app -c deepstream_app_config.txt with GST_DEBUG=4 env parameter

log.txt (159.4 KB)

I thought to share this might help to finding the issue, thanks

I have created an emtpy file dstest5_msgconv_sample_config.txt and started the inference deepstream-app -c deepstream_app_config.txt
normally, the inference started but didnt received any output

When given the GST_DEBUG=4 env parameter, got this error -

0:01:25.576676239  3734   0x7efc0b3370 ERROR        rtpjitterbuffer gstrtpjitterbuffer.c:1419:gst_jitter_buffer_sink_parse_caps:<rtpjitterbuffer0> Got caps with wrong payload type (got 50, expected 108)

what this error means, please let me know, thanks

please refer to this topic for deepstream-app can’t send broker data when conv-msg2p-new-api=0.

@fanzh , I modified conv-msg2p-new-api=1, and followed the shared link,

now, the inference is executed successfully, but didnt receive the data

and then I tried with the deepstream-test5 provided sample just changed the model path and tried agian, that time also, the inference is ok, but didnt receive the output in redis

I tried installing the redis dependencies - Gst-nvmsgbroker — DeepStream documentation

then I got the same error -

root@root:/opt/nvidia/deepstream/deepstream-6.0/sources/apps/sample_apps/deepstream-test5# ./deepstream-test5-app -c configs/test5_config_file_src_infer.txt     
** ERROR: <main:1455>: Failed to set pipeline to PAUSED
Quitting
ERROR from sink_sub_bin_sink1: Could not initialize supporting library.
Debug info: /dvs/git/dirty/git-master_linux/deepstream/sdk/src/gst-plugins/gst-nvmsgbroker/gstnvmsgbroker.cpp(373): legacy_gst_nvmsgbroker_start (): /GstPipeline:pipeline/GstBin:sink_sub_bin1/GstNvMsgBroker:sink_sub_bin_sink1:
unable to open shared library
ERROR from sink_sub_bin_sink1: GStreamer error: state change failed and some element failed to post a proper error message with the reason for the failure.
Debug info: gstbasesink.c(5265): gst_base_sink_change_state (): /GstPipeline:pipeline/GstBin:sink_sub_bin1/GstNvMsgBroker:sink_sub_bin_sink1:
Failed to start
App run failed

Hello @vishakraj,

In my case, the msgconv_config.txt file contains :
[sensor0]
enable = 0
type = Camera
id = Camera 1

[sensor1]
enable = 0
type = Camera
id = Camera 2

[sensor2]
enable = 0
type = Camera
id = Camera 3

[sensor3]
enable = 0
type = Camera
id = Camera 4

Which is not used but is added to the data anyway

nvmsgbroker is opensource. from the log, dlopen can’t open the so. could you share the log of “ldd /opt/nvidia/deepstream/deepstream/lib/libnvds_mqtt_proto.so”?

@fanzh , thanks for writing back,

>>>ldd /opt/nvidia/deepstream/deepstream-6.0/lib/libnvds_redis_proto.so 
	linux-vdso.so.1 (0x0000007fb66c8000)
	libglib-2.0.so.0 => /usr/lib/aarch64-linux-gnu/libglib-2.0.so.0 (0x0000007fb655e000)
	libcrypto.so.1.1 => /usr/lib/aarch64-linux-gnu/libcrypto.so.1.1 (0x0000007fb631b000)
	libhiredis.so.1.0.0 => not found
	libnvds_logger.so => /opt/nvidia/deepstream/deepstream-6.0/lib/libnvds_logger.so (0x0000007fb6309000)
	libstdc++.so.6 => /usr/lib/aarch64-linux-gnu/libstdc++.so.6 (0x0000007fb6175000)
	libpthread.so.0 => /lib/aarch64-linux-gnu/libpthread.so.0 (0x0000007fb6149000)
	libc.so.6 => /lib/aarch64-linux-gnu/libc.so.6 (0x0000007fb5ff0000)
	libpcre.so.3 => /lib/aarch64-linux-gnu/libpcre.so.3 (0x0000007fb5f7e000)
	/lib/ld-linux-aarch64.so.1 (0x0000007fb669c000)
	libdl.so.2 => /lib/aarch64-linux-gnu/libdl.so.2 (0x0000007fb5f69000)
	libm.so.6 => /lib/aarch64-linux-gnu/libm.so.6 (0x0000007fb5eb0000)
	libgcc_s.so.1 => /lib/aarch64-linux-gnu/libgcc_s.so.1 (0x0000007fb5e8c000)

I am using redis, for that this is the output,
Here, libhiredis.so.1.0.0 is not found, is this the issue?, if so, could you please explain how to install that,
please help to find this issue, thanks

@henri , thanks for writing back, could you please share what is these sensors, why it is used

please refer to \opt\nvidia\deepstream\deepstream\sources\libs\redis_protocol_adaptor\README for how to install libhiredis.

Hey,

I didn’t remember exactly but i think it was for information on the exchanged JSON

Sorry for the late reply, Is this still an DeepStream issue to support? Thanks!

@fanzh, it is worked that the .so file is missing,

@fanzh , @henri , thanks for helping me to solve this issue

1 Like

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.