NVIDIA Forum Reply: nvmultiurisrcbin RTSP Remove Hang
Thanks for the clarification. I confirmed that USE_NEW_NVSTREAMMUX=yes is active in this run.
The run command also printed this debug setting:
GST_DEBUG=nvmultiurisrcbin:5,nvstreammux:5,nvurisrcbin:4,rtspsrc:4,rtpjitterbuffer:4,rtpsession:4
I can rerun with plain GST_DEBUG=3 if you prefer that exact format, but the current attached logs include the requested remove failure window plus nvstreammux/nvmultiurisrcbin/RTSP details.
REST Remove Payload
For remove I am using the stable application camera_id and the same RTSP URL used for add. I am not using metadata source_id as the persistent identity.
Payload shape:
{
"key": "sensor",
"value": {
"camera_id": "matrix_cam_02",
"camera_name": "matrix_cam_02",
"camera_url": "rtsp://<redacted>",
"change": "camera_remove"
},
"headers": {
"source": "vst",
"created_at": "2026-05-26T00:00:00.000Z"
}
}
Summary Of What I Observed
I tested the same application path, same two RTSP cameras, same stable camera_id + camera_url REST remove payload, and USE_NEW_NVSTREAMMUX=yes.
The behavior is nondeterministic:
- Sometimes REST remove completes and nvstreammux releases the pad.
- Sometimes the REST remove request is received, but the expected mux pad release and remove-success markers never appear before timeout.
This does not look like a backend state mismatch. In the failed case, the missing marker is before/during mux pad release.
Successful Remove Case
In the successful case, DeepStream reached the expected markers:
uri:/api/v1/stream/remove
gst_nvstreammux_release_pad:<src_bin_muxer> Pad deleted <pad_id>
Successfully removed sensor
STREAM_REMOVE_SUCCESS
Controller diagnosis for successful remove:
native_remove_diagnosis ... failure_bucket=successful_remove
Selected successful remove markers:
373479: uri:/api/v1/stream/remove
373554: 0:04:15.307154243 e[36m 2387e[00m 0x731a30006720 e[37mDEBUG e[00m e[00m nvstreammux gstnvstreammux.cpp:1332:gst_nvstreammux_release_pad:<src_bin_muxer>e[00m Pad deleted 0
373702: 0:04:15.433531664 e[36m 2387e[00m 0x731a30006720 e[37mDEBUG e[00m e[00m nvmultiurisrcbin gstdsnvmultiurisrcbin.cpp:1873:s_stream_api_impl:<src_nvmultiurisrcbin>e[00m Successfully removed sensor
Failed Remove Case
In the failed case, DeepStream received the REST request:
uri:/api/v1/stream/remove
method:POST
But after that remove request, I did not see:
gst_nvstreammux_release_pad:<src_bin_muxer> Pad deleted <pad_id>
Successfully removed sensor
STREAM_REMOVE_SUCCESS
The controller waited 30 seconds for cleanup confirmation and timed out:
Native DeepStream did not confirm source cleanup for camera_id=matrix_cam_02 within 30.0s;
last_log=uri:/api/v1/stream/remove
The controller diagnosis classified this as before/during mux pad release:
native_remove_diagnosis
rest_remove_returned=false
stream_remove_success_seen=false
mux_pad_deleted_seen=false
marker_stream_remove_api_seen=true
marker_successfully_removed_sensor_seen=false
marker_stream_remove_success_seen=false
marker_gst_nvstreammux_release_pad_seen=false
marker_pad_deleted_seen=false
failure_bucket=before_or_during_mux_pad_release
Selected failed remove block:
575616: 0:01:25.619894923 e[31m 2664e[00m 0x7d7218006720 e[37mDEBUG e[00m e[00m nvstreammux :0::<src_bin_muxer>e[00m [remove_pad 464]App sequence error release pad called before push events
575617: 0:01:25.621099273 e[31m 2664e[00m 0x7d7218006720 e[37mDEBUG e[00m e[00m nvstreammux :0::<src_bin_muxer>e[00m [remove_pad 464]App sequence error release pad called before push events
575618: 0:01:25.622433076 e[31m 2664e[00m 0x7d7218006720 e[37mDEBUG e[00m e[00m nvstreammux :0::<src_bin_muxer>e[00m [remove_pad 464]App sequence error release pad called before push events
575619: 0:01:25.623695473 e[31m 2664e[00m 0x7d7218006720 e[37mDEBUG e[00m e[00m nvstreammux :0::<src_bin_muxer>e[00m [remove_pad 464]App sequence error release pad called before push events
575620: 0:01:25.624912678 e[31m 2664e[00m 0x7d7218006720 e[37mDEBUG e[00m e[00m nvstreammux :0::<src_bin_muxer>e[00m [remove_pad 464]App sequence error release pad called before push events
575621: 0:01:25.626198148 e[31m 2664e[00m 0x7d7218006720 e[37mDEBUG e[00m e[00m nvstreammux :0::<src_bin_muxer>e[00m [remove_pad 464]App sequence error release pad called before push events
575622: 0:01:25.627450026 e[31m 2664e[00m 0x7d7218006720 e[37mDEBUG e[00m e[00m nvstreammux :0::<src_bin_muxer>e[00m [remove_pad 464]App sequence error release pad called before push events
575623: 0:01:25.628844065 e[31m 2664e[00m 0x7d7218006720 e[37mDEBUG e[00m e[00m nvstreammux :0::<src_bin_muxer>e[00m [remove_pad 464]App sequence error release pad called before push events
575624: 0:01:25.630150310 e[31m 2664e[00m 0x7d7218006720 e[37mDEBUG e[00m e[00m nvstreammux :0::<src_bin_muxer>e[00m [remove_pad 464]App sequence error release pad called before push events
575625: 0:01:25.631402208 e[31m 2664e[00m 0x7d7218006720 e[37mDEBUG e[00m e[00m nvstreammux :0::<src_bin_muxer>e[00m [remove_pad 464]App sequence error release pad called before push events
575626: 0:01:25.632668783 e[31m 2664e[00m 0x7d7218006720 e[37mDEBUG e[00m e[00m nvstreammux :0::<src_bin_muxer>e[00m [remove_pad 464]App sequence error release pad called before push events
575627: 0:01:25.633911126 e[31m 2664e[00m 0x7d7218006720 e[37mDEBUG e[00m e[00m nvstreammux :0::<src_bin_muxer>e[00m [remove_pad 464]App sequence error release pad called before push events
575628: 0:01:25.635170513 e[31m 2664e[00m 0x7d7218006720 e[37mDEBUG e[00m e[00m nvstreammux :0::<src_bin_muxer>e[00m [remove_pad 473]100ms timeout exhausted. App sequence error release pad called before push events
575629: 0:01:25.635210007 e[31m 2664e[00m 0x7d7218006720 e[37mDEBUG e[00m e[00m nvstreammux :0::<src_bin_muxer>e[00m [remove_pad 485]DEBUGME remove_pad 485 size=1
575630: 0:01:25.635323981 e[31m 2664e[00m 0x7d7218006720 e[37mDEBUG e[00m e[00m nvmultiurisrcbin gstdsnvmultiurisrcbin.cpp:1873:s_stream_api_impl:<src_nvmultiurisrcbin>e[00m Successfully removed sensor
575631: 0:01:25.635897569 e[31m 2664e[00m 0x7d726c003690 e[37mDEBUG e[00m e[00m nvstreammux gstnvstreammux.cpp:275:gst_nvstreammux_src_event:<src_bin_muxer>e[00m latency 0:00:00.000000000
575632: Active sources : 2
575633: Tue May 26 12:05:28 2026
575634: **PERF:
575635: matrix_cam_01[testcam26] 14.00 (14.87) matrix_cam_02[matrix_cam_02] 14.00 (16.03)
575636: uri:/api/v1/stream/remove
575637: method:POST
575638: gstnvtracker: Successfully removed stream from low level tracker with Id 100000000.
575639: gstnvtracker: Successfully removed stream 1.
575640: new stream removed [1:matrix_cam_01]
575641: 0:01:25.761854080 e[31m 2664e[00m 0x7d726c0039d0 e[37mDEBUG e[00m e[00m nvstreammux :0::<src_bin_muxer>e[00m [push_loop 363]stop_task=0 acc_batch=1 is_due=1
575642: 0:01:25.761903661 e[31m 2664e[00m 0x7d726c0039d0 e[37mDEBUG e[00m e[00m nvstreammux :0::<src_bin_muxer>e[00m [push_loop 408]DEBUGME
575643: 0:01:25.761912148 e[31m 2664e[00m 0x7d726c0039d0 e[37mDEBUG e[00m e[00m nvstreammux :0::<src_bin_muxer>e[00m [get_available 116]number of buffers available in queue of pad (0) = 4
575644: 0:01:25.761916235 e[31m 2664e[00m 0x7d726c0039d0 e[37mDEBUG e[00m e[00m nvstreammux :0::<src_bin_muxer>e[00m [push_events 106][push_events] available buffers=4 q.size=4 event_indices.size=0
575645: 0:01:25.761920683 e[31m 2664e[00m 0x7d726c0039d0 e[37mDEBUG e[00m e[00m nvstreammux :0::<src_bin_muxer>e[00m [push_events 85]sink=0 get_switched_to_idle()=0 queue.size()=4 get_eos()=0
575646: 0:01:25.761923975 e[31m 2664e[00m 0x7d726c0039d0 e[37mDEBUG e[00m e[00m nvstreammux :0::<src_bin_muxer>e[00m [push_events 92]push_events num_sources_idle=0 pads_got_eos_and_empty_in_q=0(1)
575647: 0:01:25.761927148 e[31m 2664e[00m 0x7d726c0039d0 e[37mDEBUG e[00m e[00m nvstreammux :0::<src_bin_muxer>e[00m [push_events 94]DEBUGME push_events 94 size=1 pads_got_eos_and_empty_in_q=0
575648: 0:01:25.761930406 e[31m 2664e[00m 0x7d726c0039d0 e[37mDEBUG e[00m e[00m nvstreammux :0::<src_bin_muxer>e[00m [update_idle_sources 349]update_idle_sources 349 idle_sources=0
575649: 0:01:25.769607072 e[31m 2664e[00m 0x7d726c0039d0 e[37mDEBUG e[00m e[00m nvstreammux :0::<src_bin_muxer>e[00m [push_loop 419]push_loop 419
575650: 0:01:25.769696148 e[31m 2664e[00m 0x7d726c0039d0 e[37mDEBUG e[00m e[00m nvstreammux :0::<src_bin_muxer>e[00m [get_batch_size 320]get_batch_size inputs->size=1 num_sources_eos=-1 num_surfaces_per_frame=1 config=4 adaptive_batching=1, batch_size=2
575651: 0:01:25.769703473 e[31m 2664e[00m 0x7d726c0039d0 e[37mDEBUG e[00m e[00m nvstreammux :0::<src_bin_muxer>e[00m [get_batch_size 320]get_batch_size inputs->size=1 num_sources_eos=-1 num_surfaces_per_frame=1 config=4 adaptive_batching=1, batch_size=2
575652: 0:01:25.769736961 e[31m 2664e[00m 0x7d726c0039d0 e[37mDEBUG e[00m e[00m nvstreammux :0::<src_bin_muxer>e[00m [push_loop 313]push_loop 313 0x7d702800e550
575653: 0:01:25.769740358 e[31m 2664e[00m 0x7d726c0039d0 e[37mDEBUG e[00m e[00m nvstreammux :0::<src_bin_muxer>e[00m [push_loop 325]DEBUGME what
575654: 0:01:25.769745952 e[31m 2664e[00m 0x7d726c0039d0 e[37mDEBUG e[00m e[00m nvstreammux :0::<src_bin_muxer>e[00m [get_available 116]number of buffers available in queue of pad (0) = 4
575655: 0:01:25.769749609 e[31m 2664e[00m 0x7d726c0039d0 e[37mDEBUG e[00m e[00m nvstreammux :0::<src_bin_muxer>e[00m [push_events 106][push_events] available buffers=4 q.size=4 event_indices.size=0
575656: 0:01:25.769753129 e[31m 2664e[00m 0x7d726c0039d0 e[37mDEBUG e[00m e[00m nvstreammux :0::<src_bin_muxer>e[00m [push_events 85]sink=0 get_switched_to_idle()=0 queue.size()=4 get_eos()=0
575657: 0:01:25.769756220 e[31m 2664e[00m 0x7d726c0039d0 e[37mDEBUG e[00m e[00m nvstreammux :0::<src_bin_muxer>e[00m [push_events 92]push_events num_sources_idle=0 pads_got_eos_and_empty_in_q=0(1)
575658: 0:01:25.769759307 e[31m 2664e[00m 0x7d726c0039d0 e[37mDEBUG e[00m e[00m nvstreammux :0::<src_bin_muxer>e[00m [push_events 94]DEBUGME push_events 94 size=1 pads_got_eos_and_empty_in_q=0
575659: 0:01:25.769762351 e[31m 2664e[00m 0x7d726c0039d0 e[37mDEBUG e[00m e[00m nvstreammux :0::<src_bin_muxer>e[00m [update_idle_sources 349]update_idle_sources 349 idle_sources=0
575660: 0:01:25.769767191 e[31m 2664e[00m 0x7d726c0039d0 e[37mDEBUG e[00m e[00m nvstreammux :0::<src_bin_muxer>e[00m [get_batch_size 320]get_batch_size inputs->size=1 num_sources_eos=-1 num_surfaces_per_frame=1 config=4 adaptive_batching=1, batch_size=2
575661: 0:01:25.769772691 e[31m 2664e[00m 0x7d726c0039d0 e[37mDEBUG e[00m e[00m nvstreammux :0::<src_bin_muxer>e[00m [form_batch 468]sources_to_process=2
575662: 0:01:25.769775375 e[31m 2664e[00m 0x7d726c0039d0 e[37mDEBUG e[00m e[00m nvstreammux :0::<src_bin_muxer>e[00m [form_batch 485]update_with_source sid=0
575663: 0:01:25.769781411 e[31m 2664e[00m 0x7d726c0039d0 e[37mDEBUG e[00m e[00m nvstreammux :0::<src_bin_muxer>e[00m [get_batch_size 320]get_batch_size inputs->size=1 num_sources_eos=-1 num_surfaces_per_frame=1 config=4 adaptive_batching=1, batch_size=2
575664: 0:01:25.769786435 e[31m 2664e[00m 0x7d726c0039d0 e[37mDEBUG e[00m e[00m nvstreammux :0::<src_bin_muxer>e[00m [update_with_source 385]update_with_source sid=0
575665: 0:01:25.769791870 e[31m 2664e[00m 0x7d726c0039d0 e[37mDEBUG e[00m e[00m nvstreammux :0::<src_bin_muxer>e[00m [get_available 116]number of buffers available in queue of pad (0) = 4
575666: 0:01:25.769795182 e[31m 2664e[00m 0x7d726c0039d0 e[37mDEBUG e[00m e[00m nvstreammux :0::<src_bin_muxer>e[00m [update_with_source 390]num_avail=4 sid=0
575667: 0:01:25.769799821 e[31m 2664e[00m 0x7d726c0039d0 e[37mDEBUG e[00m e[00m nvstreammux :0::<src_bin_muxer>e[00m [get_batch_size 320]get_batch_size inputs->size=1 num_sources_eos=-1 num_surfaces_per_frame=1 config=4 adaptive_batching=1, batch_size=2
575668: 0:01:25.769803756 e[31m 2664e[00m 0x7d726c0039d0 e[37mDEBUG e[00m e[00m nvstreammux :0::<src_bin_muxer>e[00m [update_with_source 397]allowed_repeats=1 allowed_repeats_source=2 bs=2
575669: 0:01:25.769806817 e[31m 2664e[00m 0x7d726c0039d0 e[37mDEBUG e[00m e[00m nvstreammux :0::<src_bin_muxer>e[00m [update_with_source 399]num_avail=1 sid=0
575670: 0:01:25.769810703 e[31m 2664e[00m 0x7d726c0039d0 e[37mDEBUG e[00m e[00m nvstreammux :0::<src_bin_muxer>e[00m [update_with_source 405]synch_buffer=(nil) num_to_insert=1
575671: 0:01:25.769815176 e[31m 2664e[00m 0x7d726c0039d0 e[37mDEBUG e[00m e[00m nvstreammux :0::<src_bin_muxer>e[00m [get_available 116]number of buffers available in queue of pad (0) = 4
575672: 0:01:25.769819030 e[31m 2664e[00m 0x7d726c0039d0 e[37mDEBUG e[00m e[00m nvstreammux :0::<src_bin_muxer>e[00m [update_with_source 414]update_with_source insert 1 acc_batch 1 source_id 0 available 4 max repeats 1
575673: 0:01:25.769821789 e[31m 2664e[00m 0x7d726c0039d0 e[37mDEBUG e[00m e[00m nvstreammux :0::<src_bin_muxer>e[00m [form_batch 485]update_with_source sid=1
575674: 0:01:25.769825787 e[31m 2664e[00m 0x7d726c0039d0 e[37mDEBUG e[00m e[00m nvstreammux :0::<src_bin_muxer>e[00m [get_batch_size 320]get_batch_size inputs->size=1 num_sources_eos=-1 num_surfaces_per_frame=1 config=4 adaptive_batching=1, batch_size=2
575675: 0:01:25.769829353 e[31m 2664e[00m 0x7d726c0039d0 e[37mDEBUG e[00m e[00m nvstreammux :0::<src_bin_muxer>e[00m [update_with_source 385]update_with_source sid=1
575676: 0:01:25.769832878 e[31m 2664e[00m 0x7d726c0039d0 e[37mDEBUG e[00m e[00m nvstreammux :0::<src_bin_muxer>e[00m [form_batch 492]form_batch 492
575677: 0:01:25.769836190 e[31m 2664e[00m 0x7d726c0039d0 e[37mDEBUG e[00m e[00m nvstreammux :0::<src_bin_muxer>e[00m [calculate_wait 176]we are running tight in muxer
575678: 0:01:25.769839280 e[31m 2664e[00m 0x7d726c0039d0 e[37mDEBUG e[00m e[00m nvstreammux :0::<src_bin_muxer>e[00m [push_loop 346]wait_not_past_max=0 acc_batch=1
575679: 0:01:25.769841981 e[31m 2664e[00m 0x7d726c0039d0 e[37mDEBUG e[00m e[00m nvstreammux :0::<src_bin_muxer>e[00m [push_loop 371]DEBUGME
575680: 0:01:25.769844893 e[31m 2664e[00m 0x7d726c0039d0 e[37mDEBUG e[00m e[00m nvstreammux :0::<src_bin_muxer>e[00m [get_available 116]number of buffers available in queue of pad (0) = 4
575681: 0:01:25.769848541 e[31m 2664e[00m 0x7d726c0039d0 e[37mDEBUG e[00m e[00m nvstreammux :0::<src_bin_muxer>e[00m [push_events 106][push_events] available buffers=4 q.size=4 event_indices.size=0
575682: 0:01:25.769851964 e[31m 2664e[00m 0x7d726c0039d0 e[37mDEBUG e[00m e[00m nvstreammux :0::<src_bin_muxer>e[00m [push_events 85]sink=0 get_switched_to_idle()=0 queue.size()=4 get_eos()=0
575683: 0:01:25.769855244 e[31m 2664e[00m 0x7d726c0039d0 e[37mDEBUG e[00m e[00m nvstreammux :0::<src_bin_muxer>e[00m [push_events 92]push_events num_sources_idle=0 pads_got_eos_and_empty_in_q=0(1)
575684: 0:01:25.769859377 e[31m 2664e[00m 0x7d726c0039d0 e[37mDEBUG e[00m e[00m nvstreammux :0::<src_bin_muxer>e[00m [push_events 94]DEBUGME push_events 94 size=1 pads_got_eos_and_empty_in_q=0
575685: 0:01:25.769862475 e[31m 2664e[00m 0x7d726c0039d0 e[37mDEBUG e[00m e[00m nvstreammux :0::<src_bin_muxer>e[00m [update_idle_sources 349]update_idle_sources 349 idle_sources=0
575686: 0:01:25.769865427 e[31m 2664e[00m 0x7d726c0039d0 e[37mDEBUG e[00m e[00m nvstreammux :0::<src_bin_muxer>e[00m [copy_batch 147]DEBUGME
575687: 0:01:25.769867645 e[31m 2664e[00m 0x7d726c0039d0 e[37mDEBUG e[00m e[00m nvstreammux :0::<src_bin_muxer>e[00m [copy_batch 150]DEBUGME
575688: 0:01:25.769872620 e[31m 2664e[00m 0x7d726c0039d0 e[37mDEBUG e[00m e[00m nvstreammux :0::<src_bin_muxer>e[00m [copy_batch 163]DEBUGME; num_sources=1
575689: 0:01:25.769877794 e[31m 2664e[00m 0x7d726c0039d0 e[37mDEBUG e[00m e[00m nvstreammux :0::<src_bin_muxer>e[00m [copy_batch 171]DEBUGME
575690: 0:01:25.769943512 e[31m 2664e[00m 0x7d726c0039d0 e[37mDEBUG e[00m e[00m nvstreammux :0::<src_bin_muxer>e[00m [copy_batch 207]DEBUGME total_copied=1
575691: 0:01:25.769962977 e[31m 2664e[00m 0x7d726c0039d0 e[37mDEBUG e[00m e[00m nvstreammux :0::<src_bin_muxer>e[00m [push_loop 385]DEBUGME
575692: 0:01:25.769987558 e[31m 2664e[00m 0x7d726c003350 e[37mDEBUG e[00m e[00m nvstreammux :0::<src_bin_muxer>e[00m [add_buffer 514]id=0
575693: 0:01:25.770023901 e[31m 2664e[00m 0x7d726c0039d0 e[37mDEBUG e[00m e[00m nvstreammux :0::<src_bin_muxer>e[00m [push_loop 408]DEBUGME
575694: 0:01:25.770028378 e[31m 2664e[00m 0x7d726c003350 e[37mDEBUG e[00m e[00m nvstreammux :0::<src_bin_muxer>e[00m [add_buffer 555]add_buffer 555
575695: 0:01:25.770040382 e[31m 2664e[00m 0x7d726c0039d0 e[37mDEBUG e[00m e[00m nvstreammux :0::<src_bin_muxer>e[00m [get_available 116]number of buffers available in queue of pad (0) = 4
575696: 0:01:25.770047204 e[31m 2664e[00m 0x7d726c0039d0 e[37mDEBUG e[00m e[00m nvstreammux :0::<src_bin_muxer>e[00m [push_events 106][push_events] available buffers=4 q.size=4 event_indices.size=0
575697: 0:01:25.770052477 e[31m 2664e[00m 0x7d726c0039d0 e[37mDEBUG e[00m e[00m nvstreammux :0::<src_bin_muxer>e[00m [push_events 85]sink=0 get_switched_to_idle()=0 queue.size()=4 get_eos()=0
575698: 0:01:25.770058428 e[31m 2664e[00m 0x7d726c0039d0 e[37mDEBUG e[00m e[00m nvstreammux :0::<src_bin_muxer>e[00m [push_events 92]push_events num_sources_idle=0 pads_got_eos_and_empty_in_q=0(1)
575699: 0:01:25.770063142 e[31m 2664e[00m 0x7d726c0039d0 e[37mDEBUG e[00m e[00m nvstreammux :0::<src_bin_muxer>e[00m [push_events 94]DEBUGME push_events 94 size=1 pads_got_eos_and_empty_in_q=0
575700: 0:01:25.770067154 e[31m 2664e[00m 0x7d726c0039d0 e[37mDEBUG e[00m e[00m nvstreammux :0::<src_bin_muxer>e[00m [update_idle_sources 349]update_idle_sources 349 idle_sources=0
575701: 0:01:25.770071372 e[31m 2664e[00m 0x7d726c0039d0 e[37mDEBUG e[00m e[00m nvstreammux :0::<src_bin_muxer>e[00m [push_loop 419]push_loop 419
575702: 0:01:25.770077799 e[31m 2664e[00m 0x7d726c0039d0 e[37mDEBUG e[00m e[00m nvstreammux :0::<src_bin_muxer>e[00m [get_batch_size 320]get_batch_size inputs->size=1 num_sources_eos=-1 num_surfaces_per_frame=1 config=4 adaptive_batching=1, batch_size=2
575703: 0:01:25.770090819 e[31m 2664e[00m 0x7d726c0039d0 e[37mDEBUG e[00m e[00m nvstreammux :0::<src_bin_muxer>e[00m [get_batch_size 320]get_batch_size inputs->size=1 num_sources_eos=-1 num_surfaces_per_frame=1 config=4 adaptive_batching=1, batch_size=2
575704: 0:01:25.770149694 e[31m 2664e[00m 0x7d726c0039d0 e[37mDEBUG e[00m e[00m nvstreammux :0::<src_bin_muxer>e[00m [push_loop 313]push_loop 313 0x7d70280a0bf0
575705: 0:01:25.770192444 e[31m 2664e[00m 0x7d726c0039d0 e[37mDEBUG e[00m e[00m nvstreammux :0::<src_bin_muxer>e[00m [push_loop 325]DEBUGME what
575706: 0:01:25.770199622 e[31m 2664e[00m 0x7d726c0039d0 e[37mDEBUG e[00m e[00m nvstreammux :0::<src_bin_muxer>e[00m [get_available 116]number of buffers available in queue of pad (0) = 4
575707: 0:01:25.770206637 e[31m 2664e[00m 0x7d726c0039d0 e[37mDEBUG e[00m e[00m nvstreammux :0::<src_bin_muxer>e[00m [push_events 106][push_events] available buffers=4 q.size=4 event_indices.size=0
575708: 0:01:25.770215811 e[31m 2664e[00m 0x7d726c0039d0 e[37mDEBUG e[00m e[00m nvstreammux :0::<src_bin_muxer>e[00m [push_events 85]sink=0 get_switched_to_idle()=0 queue.size()=4 get_eos()=0
575709: 0:01:25.770155736 e[31m 2664e[00m 0x7d726c003350 e[37mDEBUG e[00m e[00m nvstreammux :0::<src_bin_muxer>e[00m [get_pad_state 222] sinkPad->state=2
575710: 0:01:25.770274028 e[31m 2664e[00m 0x7d726c003350 e[37mDEBUG e[00m e[00m nvstreammux :0::<src_bin_muxer>e[00m [add_buffer 505]id=0
575711: 0:01:25.770221846 e[31m 2664e[00m 0x7d726c0039d0 e[37mDEBUG e[00m e[00m nvstreammux :0::<src_bin_muxer>e[00m [push_events 92]push_events num_sources_idle=0 pads_got_eos_and_empty_in_q=0(1)
575712: 0:01:25.770366385 e[31m 2664e[00m 0x7d726c0039d0 e[37mDEBUG e[00m e[00m nvstreammux :0::<src_bin_muxer>e[00m [push_events 94]DEBUGME push_events 94 size=1 pads_got_eos_and_empty_in_q=0
575713: 0:01:25.770374117 e[31m 2664e[00m 0x7d726c0039d0 e[37mDEBUG e[00m e[00m nvstreammux :0::<src_bin_muxer>e[00m [update_idle_sources 349]update_idle_sources 349 idle_sources=0
575714: 0:01:25.770404104 e[31m 2664e[00m 0x7d726c0039d0 e[37mDEBUG e[00m e[00m nvstreammux :0::<src_bin_muxer>e[00m [get_batch_size 320]get_batch_size inputs->size=1 num_sources_eos=-1 num_surfaces_per_frame=1 config=4 adaptive_batching=1, batch_size=2
575715: 0:01:25.770411819 e[31m 2664e[00m 0x7d726c0039d0 e[37mDEBUG e[00m e[00m nvstreammux :0::<src_bin_muxer>e[00m [form_batch 468]sources_to_process=2
575716: 0:01:25.770417084 e[31m 2664e[0
Selected RTP/RTSP warnings after the failed remove request:
Diagnosis Markers
126: [deepstream-json-controller] event=native_rest_remove_response camera_id=matrix_cam_01 response={"reason": "STREAM_REMOVE_SUCCESS", "status": "HTTP/1.1 200 OK"}
132: [deepstream-json-controller] event=native_remove_diagnosis remove_camera_id=matrix_cam_01 rest_remove_returned=true stream_remove_success_seen=true mux_pad_deleted_seen=true marker_stream_remove_api_seen=true marker_successfully_removed_sensor_seen=true marker_stream_remove_success_seen=false marker_gst_nvstreammux_release_pad_seen=true marker_pad_deleted_seen=true failure_bucket=successful_remove
275: [deepstream-json-controller] event=native_rest_remove_response camera_id=matrix_cam_01 response={"reason": "STREAM_REMOVE_SUCCESS", "status": "HTTP/1.1 200 OK"}
281: [deepstream-json-controller] event=native_remove_diagnosis remove_camera_id=matrix_cam_01 rest_remove_returned=true stream_remove_success_seen=true mux_pad_deleted_seen=true marker_stream_remove_api_seen=true marker_successfully_removed_sensor_seen=true marker_stream_remove_success_seen=false marker_gst_nvstreammux_release_pad_seen=true marker_pad_deleted_seen=true failure_bucket=successful_remove
324: [deepstream-json-controller] event=native_rest_remove_response camera_id=matrix_cam_01 response={"reason": "STREAM_REMOVE_SUCCESS", "status": "HTTP/1.1 200 OK"}
330: [deepstream-json-controller] event=native_remove_diagnosis remove_camera_id=matrix_cam_01 rest_remove_returned=true stream_remove_success_seen=true mux_pad_deleted_seen=true marker_stream_remove_api_seen=true marker_successfully_removed_sensor_seen=true marker_stream_remove_success_seen=false marker_gst_nvstreammux_release_pad_seen=true marker_pad_deleted_seen=true failure_bucket=successful_remove
309: [DeepStreamRuntime] native_remove_debug_confirm camera_id=matrix_cam_01 still_present=False remaining_missing=[] controller_sources_after=['matrix_cam_02'] runtime_started=True pipeline_running=True
529: [DeepStreamRuntime] native_remove_debug_confirm camera_id=matrix_cam_01 still_present=False remaining_missing=[] controller_sources_after=['matrix_cam_02'] runtime_started=True pipeline_running=True
781: [DeepStreamRuntime] native_remove_debug_confirm camera_id=matrix_cam_01 still_present=False remaining_missing=[] controller_sources_after=['matrix_cam_02'] runtime_started=True pipeline_running=True
309: [DeepStreamRuntime] native_remove_debug_confirm camera_id=matrix_cam_01 still_present=False remaining_missing=[] controller_sources_after=['matrix_cam_02'] runtime_started=True pipeline_running=True
529: [DeepStreamRuntime] native_remove_debug_confirm camera_id=matrix_cam_01 still_present=False remaining_missing=[] controller_sources_after=['matrix_cam_02'] runtime_started=True pipeline_running=True
781: [DeepStreamRuntime] native_remove_debug_confirm camera_id=matrix_cam_01 still_present=False remaining_missing=[] controller_sources_after=['matrix_cam_02'] runtime_started=True pipeline_running=True
121: "reason" : "STREAM_REMOVE_SUCCESS",
124: [deepstream-json-controller] event=native_remove_phase_rest_call_done requested_camera_id=matrix_cam_01 remove_camera_id=matrix_cam_01 endpoint_url=http://127.0.0.1:9000/api/v1/stream/remove response={"reason": "STREAM_REMOVE_SUCCESS", "status": "HTTP/1.1 200 OK"} source_order_after_remove_response=['matrix_cam_01', 'matrix_cam_02']
125: [deepstream-json-controller] event=native_remove_rest_call_done requested_camera_id=matrix_cam_01 remove_camera_id=matrix_cam_01 status=HTTP/1.1 200 OK body={"reason": "STREAM_REMOVE_SUCCESS", "status": "HTTP/1.1 200 OK"}
126: [deepstream-json-controller] event=native_rest_remove_response camera_id=matrix_cam_01 response={"reason": "STREAM_REMOVE_SUCCESS", "status": "HTTP/1.1 200 OK"}
132: [deepstream-json-controller] event=native_remove_diagnosis remove_camera_id=matrix_cam_01 rest_remove_returned=true stream_remove_success_seen=true mux_pad_deleted_seen=true marker_stream_remove_api_seen=true marker_successfully_removed_sensor_seen=true marker_stream_remove_success_seen=false marker_gst_nvstreammux_release_pad_seen=true marker_pad_deleted_seen=true failure_bucket=successful_remove
270: "reason" : "STREAM_REMOVE_SUCCESS",
273: [deepstream-json-controller] event=native_remove_phase_rest_call_done requested_camera_id=matrix_cam_01 remove_camera_id=matrix_cam_01 endpoint_url=http://127.0.0.1:9000/api/v1/stream/remove response={"reason": "STREAM_REMOVE_SUCCESS", "status": "HTTP/1.1 200 OK"} source_order_after_remove_response=['matrix_cam_01', 'matrix_cam_02']
274: [deepstream-json-controller] event=native_remove_rest_call_done requested_camera_id=matrix_cam_01 remove_camera_id=matrix_cam_01 status=HTTP/1.1 200 OK body={"reason": "STREAM_REMOVE_SUCCESS", "status": "HTTP/1.1 200 OK"}
275: [deepstream-json-controller] event=native_rest_remove_response camera_id=matrix_cam_01 response={"reason": "STREAM_REMOVE_SUCCESS", "status": "HTTP/1.1 200 OK"}
281: [deepstream-json-controller] event=native_remove_diagnosis remove_camera_id=matrix_cam_01 rest_remove_returned=true stream_remove_success_seen=true mux_pad_deleted_seen=true marker_stream_remove_api_seen=true marker_successfully_removed_sensor_seen=true marker_stream_remove_success_seen=false marker_gst_nvstreammux_release_pad_seen=true marker_pad_deleted_seen=true failure_bucket=successful_remove
319: "reason" : "STREAM_REMOVE_SUCCESS",
322: [deepstream-json-controller] event=native_remove_phase_rest_call_done requested_camera_id=matrix_cam_01 remove_camera_id=matrix_cam_01 endpoint_url=http://127.0.0.1:9000/api/v1/stream/remove response={"reason": "STREAM_REMOVE_SUCCESS", "status": "HTTP/1.1 200 OK"} source_order_after_remove_response=['matrix_cam_01', 'matrix_cam_02']
323: [deepstream-json-controller] event=native_remove_rest_call_done requested_camera_id=matrix_cam_01 remove_camera_id=matrix_cam_01 status=HTTP/1.1 200 OK body={"reason": "STREAM_REMOVE_SUCCESS", "status": "HTTP/1.1 200 OK"}
324: [deepstream-json-controller] event=native_rest_remove_response camera_id=matrix_cam_01 response={"reason": "STREAM_REMOVE_SUCCESS", "status": "HTTP/1.1 200 OK"}
330: [deepstream-json-controller] event=native_remove_diagnosis remove_camera_id=matrix_cam_01 rest_remove_returned=true stream_remove_success_seen=true mux_pad_deleted_seen=true marker_stream_remove_api_seen=true marker_successfully_removed_sensor_seen=true marker_stream_remove_success_seen=false marker_gst_nvstreammux_release_pad_seen=true marker_pad_deleted_seen=true failure_bucket=successful_remove
3: [deepstream-native-runner] USE_NEW_NVSTREAMMUX=yes
50: [deepstream-native-runner] USE_NEW_NVSTREAMMUX=yes
51: [deepstream-native-runner] GST_DEBUG=nvmultiurisrcbin:5,nvstreammux:5,nvurisrcbin:4,rtspsrc:4,rtpjitterbuffer:4,rtpsession:4
373554: 0:04:15.307154243 e[36m 2387e[00m 0x731a30006720 e[37mDEBUG e[00m e[00m nvstreammux gstnvstreammux.cpp:1332:gst_nvstreammux_release_pad:<src_bin_muxer>e[00m Pad deleted 0
373702: 0:04:15.433531664 e[36m 2387e[00m 0x731a30006720 e[37mDEBUG e[00m e[00m nvmultiurisrcbin gstdsnvmultiurisrcbin.cpp:1873:s_stream_api_impl:<src_nvmultiurisrcbin>e[00m Successfully removed sensor
433505: [deepstream-native-runner] USE_NEW_NVSTREAMMUX=yes
433552: [deepstream-native-runner] USE_NEW_NVSTREAMMUX=yes
433553: [deepstream-native-runner] GST_DEBUG=nvmultiurisrcbin:5,nvstreammux:5,nvurisrcbin:4,rtspsrc:4,rtpjitterbuffer:4,rtpsession:4
575340: 0:01:25.511700098 e[31m 2664e[00m 0x7d7218006720 e[37mDEBUG e[00m e[00m nvstreammux gstnvstreammux.cpp:1332:gst_nvstreammux_release_pad:<src_bin_muxer>e[00m Pad deleted 1
575630: 0:01:25.635323981 e[31m 2664e[00m 0x7d7218006720 e[37mDEBUG e[00m e[00m nvmultiurisrcbin gstdsnvmultiurisrcbin.cpp:1873:s_stream_api_impl:<src_nvmultiurisrcbin>e[00m Successfully removed sensor
753299: 0:07:16.227293597 e[31m 2664e[00m 0x7d7214006720 e[37mDEBUG e[00m e[00m nvstreammux gstnvstreammux.cpp:1332:gst_nvstreammux_release_pad:<src_bin_muxer>e[00m Pad deleted 2
753461: 0:07:16.390595343 e[31m 2664e[00m 0x7d7214006720 e[37mDEBUG e[00m e[00m nvmultiurisrcbin gstdsnvmultiurisrcbin.cpp:1873:s_stream_api_impl:<src_nvmultiurisrcbin>e[00m Successfully removed sensor
Why I Think This Is Before/During Mux Pad Release
In the failed remove block:
/api/v1/stream/remove is present.
Pad deleted is not present after the failed remove request.
Successfully removed sensor is not present after the failed remove request.
STREAM_REMOVE_SUCCESS is not present after the failed remove request.
- RTP/RTSP warnings appear around the remove window.
- Backend/controller timeout happens after waiting for cleanup confirmation.
In the successful remove block, the same path later reaches Pad deleted and Successfully removed sensor.
So the same app path can complete correctly when nvstreammux releases the pad, but can also hang before/during that release.
Question
For live RTSP sources, is there a recommended application-side sequence before calling nvmultiurisrcbin REST remove to make nvstreammux pad release deterministic?
For example:
- wait/drain before remove?
- pause source before remove?
- send EOS/flush?
- change RTSP/jitterbuffer/source properties?
- avoid remove while mux has queued buffers for that pad?
- increase a specific DeepStream/nvmultiurisrcbin timeout?
Also, are the Got data flow before segment event warnings around rtpsession / rtpjitterbuffer relevant to the remove hang, or are they expected/noise during RTSP source teardown?
Attachments
I am attaching sanitized logs/files:
nvidia_failed_remove_block_sanitized.txt
nvidia_successful_remove_block_sanitized.txt
nvidia_controller_diagnosis_sanitized.txt
nvidia_backend_controller_runtime_markers_sanitized.txt
The RTSP credentials are redacted.
Created: 2026-05-26T18:32:05