Please provide complete information as applicable to your setup.
• Hardware Platform (Jetson / GPU) : RTX 5060
• DeepStream Version : 8.0
• TensorRT Version : 10.15.1
• NVIDIA GPU Driver Version : 590.48.01
• Issue Type : Bug
• How to reproduce the issue ?
I try to start a simple Pipeline :
nvurisrcbin → fakesink
My source :
g_print("Create pipeline\n");
GstElement *pipeline = gst_pipeline_new("face-pipeline");
/* Create gstreamer elements */
g_print("Create element\n");
GstElement *source, *fakesink;
source = gst_element_factory_make("nvurisrcbin", "multi-urisrcbin");
g_object_set(
G_OBJECT(source), "uri",
"rtsp://192.168.1.113:8554/live/3687476a-a0fb-40b6-8662-74329519cd1f",
// "file:///opt/nvidia/deepstream/deepstream-8.0/samples/streams/"
NULL);
fakesink = gst_element_factory_make("fakesink", "sink");
g_print("add bus...\n");
/* we add a message handler */
bus = gst_pipeline_get_bus(GST_PIPELINE(pipeline));
bus_watch_id = gst_bus_add_watch(bus, bus_call, loop);
gst_object_unref(bus);
g_print("Bind element\n");
gst_bin_add_many(GST_BIN(pipeline), source, fakesink, NULL);
gst_element_link_many(source, fakesink, NULL);
/* Set the pipeline to "playing" state */
g_print("Using file: %s\n", argv[1]);
gst_element_set_state(pipeline, GST_STATE_PLAYING);
std::signal(SIGINT, on_SIGINT);
/* Iterate */
g_print("Running...\n");
g_main_loop_run(loop);
When I start a pipeline with an nvurisrcbin element using rtsp uri, deepstream crash with this log.
Protocol set: 0x7
Running…
FATAL 56: uncaught error
PANIC 56: uncaught error (calling abort)
Abandon (core dumped)
The error occure when using nvurisrcbin and nvmultiurisrcbin with RTSP, file source work.
The most strange thinks is the error occure only when I launch a pipeline in an CPP project using CMake. I can start a working pipeline in the cli with this command :
gst-launch-1.0 nvmultiurisrcbin width=640 height=480 live-source=1 batched-push-timeout=33333 max-batch-size=8 port=9999 uri-list=rtsp://192.168.1.113:8554/live/3687476a-a0fb-40b6-8662-74329519cd1f ! fakesink
Also, work fine when I change the test1 to recreate this pipeline :
pipeline = gst_pipeline_new("dstest1-pipeline");
source = gst_element_factory_make("nvmultiurisrcbin", "file-source");
g_object_set(
G_OBJECT(source), "uri-list",
"rtsp://192.168.1.113:8554/live/3687476a-a0fb-40b6-8662-74329519cd1f",
"ip-address", "0.0.0.0", "port", "9999", "live-source", 1,
"batched-push-timeout", 33333, "max-batch-size", 8, "width", 640,
"height", 480, NULL);
sink = gst_element_factory_make("fakesink", "nv3d-sink");
bus = gst_pipeline_get_bus(GST_PIPELINE(pipeline));
bus_watch_id = gst_bus_add_watch(bus, bus_call, loop);
gst_object_unref(bus);
gst_bin_add_many(GST_BIN(pipeline), source, sink, NULL);
g_print("Added elements to bin\n");
if (!gst_element_link_many(source, sink, NULL)) {
g_printerr("Elements could not be linked: 2. Exiting.\n");
return -1;
}
g_print("Using file: %s\n", argv[1]);
gst_element_set_state(pipeline, GST_STATE_PLAYING);
g_print("Running...\n");
g_main_loop_run(loop);
For info, this is my CMakeLists.txt, it work fine with other ds gst element and plugin.
cmake_minimum_required(VERSION 3.25)
project(deepstream-test2 LANGUAGES C CXX) #project(deepstream-test5 LANGUAGES CUDA C CXX)
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_STANDARD_REQUIRED on)
set (CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)
set(CMAKE_BUILD_TYPE Debug)
find_package(PkgConfig REQUIRED)
pkg_check_modules(PKGS REQUIRED uuid x11 gstreamer-video-1.0 json-glib-1.0 gstreamer-1.0 gstreamer-rtsp-server-1.0 yaml-cpp)
find_package(CUDAToolkit)
message("CUDA_VER is ${CUDAToolkit_VERSION_MAJOR}.${CUDAToolkit_VERSION_MINOR}")
if(NOT DEFINED CMAKE_CUDA_STANDARD)
set(CMAKE_CUDA_STANDARD 11)
set(CMAKE_CUDA_STANDARD_REQUIRED True)
endif()
SET_SOURCE_FILES_PROPERTIES(
${OBJS}
PROPERTIES
EXTERNAL_OBJECT true
GENERATED true
)
if ( "${CMAKE_BUILD_TYPE}" STREQUAL "")
set(CMAKE_BUILD_TYPE "Debug")
endif ()
include_guard(GLOBAL)
include(FetchContent)
FetchContent_Declare(
milvus-sdk
GIT_REPOSITORY https://github.com/milvus-io/milvus-sdk-cpp.git
GIT_TAG 2.6
GIT_SHALLOW TRUE
GIT_PROGRESS TRUE
UPDATE_DISCONNECTED TRUE
)
FetchContent_MakeAvailable(milvus-sdk)
message(STATUS " milvus-sdk_SOURCE_DIR: ${milvus-sdk_SOURCE_DIR}")
message(STATUS " milvus-sdk_BINARY_DIR: ${milvus-sdk_BINARY_DIR}")
include_directories(${milvus-sdk_SOURCE_DIR}/src/include)
link_directories(${milvus-sdk_BINARY_DIR}/src)
add_executable(${PROJECT_NAME}
${OBJS}
deepstream_test2_app.cpp
face_registry.cpp
gst_setup.cpp
MilvusContext.cpp
)
target_include_directories(${PROJECT_NAME} PRIVATE
${PKGS_INCLUDE_DIRS}
${CMAKE_CUDA_TOOLKIT_INCLUDE_DIRECTORIES}
/opt/nvidia/deepstream/deepstream-8.0/sources/apps/apps-common/includes
/opt/nvidia/deepstream/deepstream-8.0/sources/includes
/usr/include/jsoncpp
/usr/local/include/milvus
${CMAKE_CURRENT_SOURCE_DIR}/cparse
${CMAKE_CURRENT_SOURCE_DIR}
)
target_link_libraries(${PROJECT_NAME} PRIVATE
${PKGS_LIBRARIES}
CUDA::cuda_driver
nvds_utils nvdsgst_helper m nvdsgst_meta nvds_meta stdc++
nvbufsurface nvbufsurftransform nvds_batch_jpegenc nvds_rest_server uuid jpeg png nvds_yml_parser
nvdsgst_smartrecord nvds_msgbroker nvdsgst_customhelper
pthread jsoncpp gstrtspserver-1.0
milvus_sdk
PRIVATE CUDA::cudart
)
target_link_directories(${PROJECT_NAME} PRIVATE
/opt/nvidia/deepstream/deepstream-8.0/lib/
)
target_link_options(${PROJECT_NAME} PRIVATE -Wl,-rpath,/opt/nvidia/deepstream/deepstream-8.0/lib/)
Thank for your help.