Set nvarguscamerasrc to PAUSE crashes nvargus-daemon / gstreamer

Hey,
I’m experiencing many different issues with my multicamera setup using nvarguscamerasrc.

First of all my setup:

  • Jetson Orin 8GB with OE4T/meta-tegra scarthgap image (Jetson Linux 36.4.4)
  • jetson clocks are boosted
  • up to 4x AR0544 imager
  • each imager is triggered by a hardware trigger for synchronization reasons
  • each imager gets its own gstreamer pipeline. Each pipeline looks like this:

My usecases:
Stream images between 5 Hz and 20 Hz, which are hardware triggered. Pause the stream within 4 seconds and start the stream at any later point.

1. Starting multiple streams at the same time crashes gstreamer (solved by myself)
Simply execute this command below, will result into crashes:

gst-launch-1.0 \
nvarguscamerasrc sensor-id=0 sensor-mode=0 ! fakesink \
nvarguscamerasrc sensor-id=1 sensor-mode=0 ! fakesink \
nvarguscamerasrc sensor-id=2 sensor-mode=0 ! fakesink \
nvarguscamerasrc sensor-id=3 sensor-mode=0 ! fakesink

Logs

[...]
Jan 01 00:20:33 ovp93x eugust[1139]: nvbuf_utils: dmabuf_fd -1 mapped entry NOT found
Jan 01 00:20:33 ovp93x eugust[1139]: End-Of-Stream reached.

nvargus-daemon does not produce any logs, even if you activate verbose output

→ Solved this issue by adding a inter process mutex across each ArgusCamera::execute

  // Use file lock for inter-process synchronization to prevent race conditions
  // in Argus daemon when multiple nvarguscamerasrc instances start simultaneously
  // across different processes (e.g., multiple gst-launch-1.0 invocations)
  {
    ScopedFileLock initLock(ARGUS_INIT_LOCK_FILE);
    if (!initLock.isValid()) {
      GST_WARNING("Could not create lock file %s (errno=%d), proceeding without lock\n", ARGUS_INIT_LOCK_FILE.c_str(), errno);
    } else if (!initLock.isLocked()) {
      GST_WARNING("Could not acquire lock (errno=%d), proceeding without lock\n", errno);
    } else {
      GST_INFO("Camera %d acquired initialization lock\n", cameraIndex);
    }

    GST_ARGUS_PRINT("Starting repeat capture requests.\n");
    Request* captureRequest = src->request.get();
    src->request_ptr = captureRequest;
    iCaptureSession->capture(captureRequest);
    if (iCaptureSession->capture(captureRequest) == 0)
      ORIGINATE_ERROR("Failed to start capture request");

    // Add a small delay to let the Argus daemon fully complete this camera's setup
    // before allowing the next camera to initialize
    if (initLock.isLocked()) {
      std::this_thread::sleep_for(ARGUS_INIT_SETTLE_TIME);
      GST_INFO("Camera %d releasing initialization lock\n", cameraIndex);
    }
  }

2. PAUSE the stream
A classic gstreamer state change from GST_STATE_PLAYING to GST_STATE_PAUSED does not work. In that case, nvargus-daemon run into a timeout. I already know that this is a common issue, so instead of GST_STATE_PAUSED i set it to GST_STATE_READY. As I understood, this will stop the whole argus capture session, which does not lead to a nvargus-daemon timeout. (I did try enableCamInfiniteTimeout=1 but i only received 1 Frame and then nvargus-daemon crashed)

Anyway, this takes approximately 5 seconds to set all 4 streams to pause, which is far too long for our use case! Switching only one stream to READY takes ~200ms. Is there somehow a way to speed up setting the stream to PAUSE / READY?

I already noticed that the line UniqueObj<Frame> frame(iFrameConsumer->acquireFrame(src->acquire_timeout, &frame_status)); (within StreamConsumer::threadExecute) can block the teardown up to src->acquire_timeout seconds (default 5s). Reducing the timeout number would lead to false positive “eof” interpretations, which shutdowns pipeline. Also tried to call the acquireFrame in much smaller slices of 100ms each slice up to the acquire_timeout. This increased the teardown speed, but leads to other crashes in the libargus after 100 to 500 state changes. Did not further investigate the internal Argus state machine behavior.

I also tested the state switch with only one imager connected and noticed some other issues after some time:

nvargus-daemon logs
Jan 01 02:57:03 ovp93x nvargus-daemon[885]: === NVIDIA Libargus Camera Service (0.99.33)=== Listening for connections...=== eugust[1136]: Connection established (FFFF819DB8C0)OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module0
Jan 01 02:57:03 ovp93x nvargus-daemon[885]: NvPclHwGetModuleList: WARNING: Could not map module to ISP config string
Jan 01 02:57:03 ovp93x nvargus-daemon[885]: NvPclHwGetModuleList: No module data found
Jan 01 02:57:03 ovp93x nvargus-daemon[885]: OFParserGetVirtualDevice: NVIDIA Camera virtual enumerator not found in proc device-tree
Jan 01 02:57:03 ovp93x nvargus-daemon[885]: ---- imager: Found override file [/var/nvidia/nvcam/settings/ar0544_centerleft_ifmar0544.isp]. ----
Jan 01 02:59:29 ovp93x nvargus-daemon[885]: CAM: serial no file already exists, skips storing again=== eugust[1136]: CameraProvider initialized (0xffff7cb19c20)CAM: serial no file already exists, skips storing againCAM: serial no file already exists, skips storing again(NvCamV4l2) Error IoctlFailed:  (in /dvs/git/dirty/git-master_linux/camera/utils/nvcamv4l2/v4l2_device.cpp, function streamControl(), line 1661)
Jan 01 02:59:29 ovp93x nvargus-daemon[885]: (NvOdmDevice) Error IoctlFailed:  (propagating from dvs/git/dirty/git-master_linux/camera-partner/imager/src/devices/V4L2SensorViCsi.cpp, function apply(), line 277)
Jan 01 02:59:29 ovp93x nvargus-daemon[885]: PowerServiceCore:handleRequests: timePassed = 1603
Jan 01 02:59:29 ovp93x nvargus-daemon[885]: (NvCamV4l2) Error IoctlFailed:  (in /dvs/git/dirty/git-master_linux/camera/utils/nvcamv4l2/v4l2_device.cpp, function setControlValMultiple(), line 792)
Jan 01 02:59:29 ovp93x nvargus-daemon[885]: (NvOdmDevice) Error IoctlFailed:  (propagating from dvs/git/dirty/git-master_linux/camera-partner/imager/src/devices/V4L2SensorViCsi.cpp, function setDeviceControls(), line 2064)
Jan 01 02:59:29 ovp93x nvargus-daemon[885]: updateOutputSettings: Set Control failed. Use cached values
Jan 01 02:59:29 ovp93x nvargus-daemon[885]: (NvCamV4l2) Error IoctlFailed:  (in /dvs/git/dirty/git-master_linux/camera/utils/nvcamv4l2/v4l2_device.cpp, function streamControl(), line 1661)
Jan 01 02:59:29 ovp93x nvargus-daemon[885]: (NvOdmDevice) Error IoctlFailed:  (propagating from dvs/git/dirty/git-master_linux/camera-partner/imager/src/devices/V4L2SensorViCsi.cpp, function apply(), line 277)
Jan 01 02:59:29 ovp93x nvargus-daemon[885]: PowerServiceCore:handleRequests: timePassed = 754
Jan 01 02:59:32 ovp93x nvargus-daemon[885]: CAM: serial no file already exists, skips storing againPowerServiceCore:handleRequests: timePassed = 1683
Jan 01 02:59:35 ovp93x nvargus-daemon[885]: CAM: serial no file already exists, skips storing again(NvCamV4l2) Error IoctlFailed:  (in /dvs/git/dirty/git-master_linux/camera/utils/nvcamv4l2/v4l2_device.cpp, function streamControl(), line 1661)
Jan 01 02:59:35 ovp93x nvargus-daemon[885]: (NvOdmDevice) Error IoctlFailed:  (propagating from dvs/git/dirty/git-master_linux/camera-partner/imager/src/devices/V4L2SensorViCsi.cpp, function apply(), line 277)
Jan 01 02:59:35 ovp93x nvargus-daemon[885]: PowerServiceCore:handleRequests: timePassed = 1650
Jan 01 02:59:35 ovp93x nvargus-daemon[885]: (NvCamV4l2) Error IoctlFailed:  (in /dvs/git/dirty/git-master_linux/camera/utils/nvcamv4l2/v4l2_device.cpp, function setControlValMultiple(), line 792)
Jan 01 02:59:35 ovp93x nvargus-daemon[885]: (NvOdmDevice) Error IoctlFailed:  (propagating from dvs/git/dirty/git-master_linux/camera-partner/imager/src/devices/V4L2SensorViCsi.cpp, function setDeviceControls(), line 2064)
Jan 01 02:59:35 ovp93x nvargus-daemon[885]: updateOutputSettings: Set Control failed. Use cached values
Jan 01 02:59:36 ovp93x nvargus-daemon[885]: (NvCamV4l2) Error IoctlFailed:  (in /dvs/git/dirty/git-master_linux/camera/utils/nvcamv4l2/v4l2_device.cpp, function streamControl(), line 1661)
Jan 01 02:59:36 ovp93x nvargus-daemon[885]: (NvOdmDevice) Error IoctlFailed:  (propagating from dvs/git/dirty/git-master_linux/camera-partner/imager/src/devices/V4L2SensorViCsi.cpp, function apply(), line 277)
Jan 01 02:59:36 ovp93x nvargus-daemon[885]: (NvCamV4l2) Error IoctlFailed:  (in /dvs/git/dirty/git-master_linux/camera/utils/nvcamv4l2/v4l2_device.cpp, function streamControl(), line 1661)
Jan 01 02:59:36 ovp93x nvargus-daemon[885]: (NvOdmDevice) Error IoctlFailed:  (propagating from dvs/git/dirty/git-master_linux/camera-partner/imager/src/devices/V4L2SensorViCsi.cpp, function apply(), line 277)
Jan 01 02:59:36 ovp93x nvargus-daemon[885]: PowerServiceCore:handleRequests: timePassed = 484
Jan 01 02:59:36 ovp93x nvargus-daemon[885]: (NvCamV4l2) Error IoctlFailed:  (in /dvs/git/dirty/git-master_linux/camera/utils/nvcamv4l2/v4l2_device.cpp, function setControlValMultiple(), line 792)
Jan 01 02:59:36 ovp93x nvargus-daemon[885]: (NvOdmDevice) Error IoctlFailed:  (propagating from dvs/git/dirty/git-master_linux/camera-partner/imager/src/devices/V4L2SensorViCsi.cpp, function setDeviceControls(), line 2064)
Jan 01 02:59:36 ovp93x nvargus-daemon[885]: updateOutputSettings: Set Control failed. Use cached values
Jan 01 02:59:36 ovp93x nvargus-daemon[885]: (NvCamV4l2) Error IoctlFailed:  (in /dvs/git/dirty/git-master_linux/camera/utils/nvcamv4l2/v4l2_device.cpp, function streamControl(), line 1661)
Jan 01 02:59:36 ovp93x nvargus-daemon[885]: (NvOdmDevice) Error IoctlFailed:  (propagating from dvs/git/dirty/git-master_linux/camera-partner/imager/src/devices/V4L2SensorViCsi.cpp, function apply(), line 277)
Jan 01 02:59:40 ovp93x nvargus-daemon[885]: SCF: Error InvalidState: Timeout!! Skipping requests on sensor GUID 1, capture sequence ID = 281470681743360 draining session frameStart events 3
Jan 01 02:59:40 ovp93x nvargus-daemon[885]:  (in src/services/capture/FusaCaptureViCsiHw.cpp, function waitCsiFrameStart(), line 529)
Jan 01 02:59:40 ovp93x nvargus-daemon[885]: SCF: Error InvalidState: Sensor GUID 1 is in error state. Skipping requests, capture sequence ID = 281470681743361 continue draining session frameStart events 2
Jan 01 02:59:40 ovp93x nvargus-daemon[885]:  (in src/services/capture/FusaCaptureViCsiHw.cpp, function waitCsiFrameStart(), line 543)
Jan 01 02:59:40 ovp93x nvargus-daemon[885]: SCF: Error InvalidState: Sensor GUID 1 is in error state. Skipping requests, capture sequence ID = 281470681743362 continue draining session frameStart events 1
Jan 01 02:59:40 ovp93x nvargus-daemon[885]:  (in src/services/capture/FusaCaptureViCsiHw.cpp, function waitCsiFrameStart(), line 543)
Jan 01 02:59:40 ovp93x nvargus-daemon[885]: SCF: Error InvalidState: Sensor 1 already in same state
Jan 01 02:59:40 ovp93x nvargus-daemon[885]:  (in src/services/capture/CaptureServiceDeviceSensor.cpp, function setErrorState(), line 100)
Jan 01 02:59:40 ovp93x nvargus-daemon[885]: SCF: Error InvalidState: Timeout!! Skipping requests on sensor GUID 1, capture sequence ID = 0 draining session frameEnd events 3
Jan 01 02:59:40 ovp93x nvargus-daemon[885]:  (in src/services/capture/FusaCaptureViCsiHw.cpp, function waitCsiFrameEnd(), line 646)
Jan 01 02:59:40 ovp93x nvargus-daemon[885]: SCF: Error InvalidState: Sensor 1 already in same state
Jan 01 02:59:40 ovp93x nvargus-daemon[885]:  (in src/services/capture/CaptureServiceDeviceSensor.cpp, function setErrorState(), line 100)
Jan 01 02:59:40 ovp93x nvargus-daemon[885]: SCF: Error InvalidState: Timeout!! Skipping requests on sensor GUID 1, capture sequence ID = 1 draining session frameEnd events 2
Jan 01 02:59:40 ovp93x nvargus-daemon[885]:  (in src/services/capture/FusaCaptureViCsiHw.cpp, function waitCsiFrameEnd(), line 646)
Jan 01 02:59:40 ovp93x nvargus-daemon[885]: SCF: Error InvalidState: Sensor 1 already in same state
Jan 01 02:59:40 ovp93x nvargus-daemon[885]:  (in src/services/capture/CaptureServiceDeviceSensor.cpp, function setErrorState(), line 100)
Jan 01 02:59:40 ovp93x nvargus-daemon[885]: SCF: Error InvalidState: Timeout!! Skipping requests on sensor GUID 1, capture sequence ID = 2 draining session frameEnd events 1
Jan 01 02:59:40 ovp93x nvargus-daemon[885]:  (in src/services/capture/FusaCaptureViCsiHw.cpp, function waitCsiFrameEnd(), line 646)
Jan 01 02:59:40 ovp93x nvargus-daemon[885]: SCF: Error Timeout: Sending critical error event for Session 1
Jan 01 02:59:40 ovp93x nvargus-daemon[885]:  (in src/api/Session.cpp, function sendErrorEvent(), line 1039)
Jan 01 02:59:40 ovp93x nvargus-daemon[885]: SCF: Error BadParameter: CC has already been disposed (in src/components/CaptureContainerManager.cpp, function dispose(), line 161)
Jan 01 02:59:40 ovp93x nvargus-daemon[885]: SCF: Error BadParameter: CC has already been disposed (in src/components/CaptureContainerManager.cpp, function dispose(), line 161)
Jan 01 02:59:40 ovp93x nvargus-daemon[885]: SCF: Error BadParameter: CC has already been disposed (in src/components/CaptureContainerManager.cpp, function dispose(), line 161)
Jan 01 02:59:40 ovp93x nvargus-daemon[885]: SCF: Error InvalidState: Session has suffered a critical failure (in src/api/Session.cpp, function capture(), line 734)
Jan 01 02:59:40 ovp93x nvargus-daemon[885]: (Argus) Error InvalidState:  (propagating from src/api/ScfCaptureThread.cpp, function run(), line 110)
Jan 01 02:59:40 ovp93x nvargus-daemon[885]: === eugust[1136]: Connection closed (FFFF819DB8C0)=== eugust[1136]: WARNING: CameraProvider was not destroyed before client connection terminated.=== eugust[1136]:          The client may have abnormally terminated. Destroying CameraProvider...=== eugust[1136]: CameraProvider destroyed (0xffff7cb19c20)=== eugust[1136]: WARNING: Cleaning up 1 outstanding requests...=== eugust[1136]: WARNING: Cleaning up 1 outstanding stream settings...=== eugust[1136]: WARNING: Cleaning up 1 outstanding queues...=== eugust[1136]: WARNING: Cleaning up 1 outstanding sessions...PowerServiceCore:handleRequests: timePassed = 4027
Jan 01 02:59:40 ovp93x nvargus-daemon[885]: === eugust[1136]: WARNING: Cleaning up 1 outstanding streams...(Argus) Error InvalidState: Unknown stream deleted. (in src/api/CaptureSessionImpl.cpp, function outputStreamDeleted(), line 1106)
Jan 01 02:59:46 ovp93x nvargus-daemon[885]: === eugust[1136]: NOTE: Destroy all libargus objects before destroying the CameraProvider to avoid these warnings.=== eugust[1136]: Connection cleaned up (FFFF819DB8C0)=== eugust[1643]: Connection established (FFFF819DB8C0)OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module0
Jan 01 02:59:46 ovp93x nvargus-daemon[885]: NvPclHwGetModuleList: WARNING: Could not map module to ISP config string
Jan 01 02:59:46 ovp93x nvargus-daemon[885]: NvPclHwGetModuleList: No module data found
Jan 01 02:59:46 ovp93x nvargus-daemon[885]: OFParserGetVirtualDevice: NVIDIA Camera virtual enumerator not found in proc device-tree
Jan 01 02:59:46 ovp93x nvargus-daemon[885]: ---- imager: Found override file [/var/nvidia/nvcam/settings/ar0544_centerleft_ifmar0544.isp]. ----

Throwing away the Images to simulate a pause is not a option. This would a) still add system load to the device and b) could cause some issues with our hardware trigger, because this needs to be stopped sometimes to reconfigure the whole synchronization stuff.

Based on these errors, it seems that PAUSE a stream may not be supported in nvarguscamerasrc at all. Is this interpretation correct?

Replace below libs to verify again.

libnvscf.so.36.4.3.infinit (8.5 MB)

libnvfusacap.so_r36.4.3 (231.9 KB)

I reran my state‑switch test (with all four imagers connected simultaneously), and I’m still seeing unexpectedly high transition times.

The green line represents the time required to switch from GST_STATE_PLAYING to GST_STATE_READY. As shown in the graph, the duration frequently spikes up to around 6 seconds. Near the end of the test, the transition time exceeded 10 seconds, which triggered my watchdog and stopped the test.

I also noticed these log message Error InvalidState:

Mar 16 18:28:21 ovp93x nvargus-daemon[892]: SCF: Error InvalidState: viCsiHw isn't closed for source
Mar 16 18:28:21 ovp93x nvargus-daemon[892]:  (in src/services/capture/CaptureServiceDevice.cpp, function closeSource(), line 425)
Mar 16 18:28:21 ovp93x nvargus-daemon[892]: SCF: Error InvalidState:  (propagating from src/services/capture/CaptureService.cpp, function closeSource(), line 580)
Mar 16 18:28:21 ovp93x nvargus-daemon[892]: SCF: Error InvalidState:  (propagating from src/api/Session.cpp, function shutdown(), line 507)
Mar 16 18:28:21 ovp93x nvargus-daemon[892]: SCF: Error InvalidState:  (propagating from src/api/Session.cpp, function shutdown(), line 562)
Mar 16 18:28:21 ovp93x nvargus-daemon[892]: SCF: Error InvalidState:  (propagating from src/api/CameraDriver.cpp, function deleteSession(), line 740)
Mar 16 18:28:21 ovp93x nvargus-daemon[892]: (Argus) Error InvalidState:  (propagating from src/api/CaptureSessionImpl.cpp, function destroy(), line 262)
Mar 16 18:28:26 ovp93x nvargus-daemon[892]: CAM: serial no file already exists, skips storing againCAM: serial no file already exists, skips storing againCAM: serial no file already exists, skips storing againC>
Mar 16 18:28:27 ovp93x nvargus-daemon[892]: PowerServiceCore:handleRequests: timePassed = 876
Mar 16 18:28:28 ovp93x nvargus-daemon[892]: PowerServiceCore:handleRequests: timePassed = 875
Mar 16 18:28:28 ovp93x nvargus-daemon[892]: PowerServiceCore:handleRequests: timePassed = 865
Mar 16 18:28:34 ovp93x nvargus-daemon[892]: PowerServiceCore:handleRequests: timePassed = 4704
Mar 16 18:28:38 ovp93x nvargus-daemon[892]: CAM: serial no file already exists, skips storing againCAM: serial no file already exists, skips storing againCAM: serial no file already exists, skips storing againC>
Mar 16 18:28:39 ovp93x nvargus-daemon[892]: PowerServiceCore:handleRequests: timePassed = 875
Mar 16 18:28:40 ovp93x nvargus-daemon[892]: PowerServiceCore:handleRequests: timePassed = 856
Mar 16 18:28:41 ovp93x nvargus-daemon[892]: PowerServiceCore:handleRequests: timePassed = 858
Mar 16 18:28:41 ovp93x nvargus-daemon[892]: SCF: Error InvalidState: viCsiHw isn't closed for source
Mar 16 18:28:41 ovp93x nvargus-daemon[892]:  (in src/services/capture/CaptureServiceDevice.cpp, function closeSource(), line 425)
Mar 16 18:28:41 ovp93x nvargus-daemon[892]: SCF: Error InvalidState:  (propagating from src/services/capture/CaptureService.cpp, function closeSource(), line 580)
Mar 16 18:28:41 ovp93x nvargus-daemon[892]: SCF: Error InvalidState:  (propagating from src/api/Session.cpp, function shutdown(), line 507)
Mar 16 18:28:41 ovp93x nvargus-daemon[892]: SCF: Error InvalidState:  (propagating from src/api/Session.cpp, function shutdown(), line 562)
Mar 16 18:28:41 ovp93x nvargus-daemon[892]: SCF: Error InvalidState:  (propagating from src/api/CameraDriver.cpp, function deleteSession(), line 740)
Mar 16 18:28:41 ovp93x nvargus-daemon[892]: (Argus) Error InvalidState:  (propagating from src/api/CaptureSessionImpl.cpp, function destroy(), line 262)
``

Could you verify by single camera?

Did not see any errors after 2,5h and 1300 state changes:

As expected with 1 imager, it only takes ~210ms.

Could you boost the clocks to verify.

sudo nvpmodel -m 0
sudo jetson_clocks
sudo su
echo 1 > /sys/kernel/debug/bpmp/debug/clk/vi/mrq_rate_locked
echo 1 > /sys/kernel/debug/bpmp/debug/clk/isp/mrq_rate_locked
echo 1 > /sys/kernel/debug/bpmp/debug/clk/nvcsi/mrq_rate_locked
echo 1 > /sys/kernel/debug/bpmp/debug/clk/emc/mrq_rate_locked
cat /sys/kernel/debug/bpmp/debug/clk/vi/max_rate |tee /sys/kernel/debug/bpmp/debug/clk/vi/rate
cat /sys/kernel/debug/bpmp/debug/clk/isp/max_rate | tee  /sys/kernel/debug/bpmp/debug/clk/isp/rate
cat /sys/kernel/debug/bpmp/debug/clk/nvcsi/max_rate | tee /sys/kernel/debug/bpmp/debug/clk/nvcsi/rate
cat /sys/kernel/debug/bpmp/debug/clk/emc/max_rate | tee /sys/kernel/debug/bpmp/debug/clk/emc/rate

Result of 1x Imager and clocks activated (1,5h / 900 switches):

jetson_clocks --show
root@ovp93x (productive):~# jetson_clocks --show
SOC family:tegra234  Machine:ovp93x:c0:orin-nx-8gb
Online CPUs: 0-5
cpu0:  Online=1 Governor=schedutil MinFreq=1984000 MaxFreq=1984000 CurrentFreq=1984000 IdleStates: WFI=0 c7=0 
cpu1:  Online=1 Governor=schedutil MinFreq=1984000 MaxFreq=1984000 CurrentFreq=1984000 IdleStates: WFI=0 c7=0 
cpu2:  Online=1 Governor=schedutil MinFreq=1984000 MaxFreq=1984000 CurrentFreq=1984000 IdleStates: WFI=0 c7=0 
cpu3:  Online=1 Governor=schedutil MinFreq=1984000 MaxFreq=1984000 CurrentFreq=1984000 IdleStates: WFI=0 c7=0 
cpu4:  Online=1 Governor=schedutil MinFreq=1984000 MaxFreq=1984000 CurrentFreq=1984000 IdleStates: WFI=0 c7=0 
cpu5:  Online=1 Governor=schedutil MinFreq=1984000 MaxFreq=1984000 CurrentFreq=1984000 IdleStates: WFI=0 c7=0 
GPU MinFreq=1173000000 MaxFreq=1173000000 CurrentFreq=1173000000
Active GPU TPCs: 4
EMC MinFreq=204000000 MaxFreq=3199000000 CurrentFreq=3199000000 FreqOverride=1
DLA0_CORE:   Online=1 MinFreq=0 MaxFreq=1228800000 CurrentFreq=1228800000
DLA0_FALCON: Online=1 MinFreq=0 MaxFreq=652800000 CurrentFreq=652800000
PVA0_VPS0: Online=1 MinFreq=0 MaxFreq=1190400000 CurrentFreq=1190400000
PVA0_AXI:  Online=1 MinFreq=0 MaxFreq=857600000 CurrentFreq=857600000
FAN Dynamic Speed Control=nvfancontrol hwmon2_pwm1=255
NV Power Mode: MAXN_SUPER

I will add the results for 4 imager as soon as I have them.

Result of 4x Imager (4min / 30 switches):

then i got a SIGSEGV:

nvargus-daemon
M: serial no file already exists, skips storing againPowerServiceCore:handleRequests: timePassed = 4092
Mar 17 16:02:44 ovp93x nvargus-daemon[884]: PowerServiceCore:handleRequests: timePassed = 847
Mar 17 16:02:45 ovp93x nvargus-daemon[884]: PowerServiceCore:handleRequests: timePassed = 862
Mar 17 16:02:46 ovp93x nvargus-daemon[884]: PowerServiceCore:handleRequests: timePassed = 849
Mar 17 16:02:46 ovp93x nvargus-daemon[884]: SCF: Error InvalidState: viCsiHw isn't closed for source
Mar 17 16:02:46 ovp93x nvargus-daemon[884]:  (in src/services/capture/CaptureServiceDevice.cpp, function closeSource(), line 425)
Mar 17 16:02:46 ovp93x nvargus-daemon[884]: SCF: Error InvalidState:  (propagating from src/services/capture/CaptureService.cpp, function closeSource(), line 580)
Mar 17 16:02:46 ovp93x nvargus-daemon[884]: SCF: Error InvalidState:  (propagating from src/api/Session.cpp, function shutdown(), line 507)
Mar 17 16:02:46 ovp93x nvargus-daemon[884]: SCF: Error InvalidState:  (propagating from src/api/Session.cpp, function shutdown(), line 562)
Mar 17 16:02:46 ovp93x nvargus-daemon[884]: SCF: Error InvalidState:  (propagating from src/api/CameraDriver.cpp, function deleteSession(), line 740)
Mar 17 16:02:46 ovp93x nvargus-daemon[884]: (Argus) Error InvalidState:  (propagating from src/api/CaptureSessionImpl.cpp, function destroy(), line 262)
Mar 17 16:02:50 ovp93x nvargus-daemon[884]: CAM: serial no file already exists, skips storing againCAM: serial no file already exists, skips storing againCAM: serial no file already exists, skips storing againCAM: serial no file already exists, skips storing againPowerServiceCore:handleRequests: timePassed = 4083
Mar 17 16:02:51 ovp93x nvargus-daemon[884]: PowerServiceCore:handleRequests: timePassed = 861
Mar 17 16:02:52 ovp93x nvargus-daemon[884]: PowerServiceCore:handleRequests: timePassed = 848
Mar 17 16:02:53 ovp93x nvargus-daemon[884]: PowerServiceCore:handleRequests: timePassed = 850
Mar 17 16:02:53 ovp93x nvargus-daemon[884]: SCF: Error InvalidState: viCsiHw isn't closed for source
Mar 17 16:02:53 ovp93x nvargus-daemon[884]:  (in src/services/capture/CaptureServiceDevice.cpp, function closeSource(), line 425)
Mar 17 16:02:53 ovp93x nvargus-daemon[884]: SCF: Error InvalidState:  (propagating from src/services/capture/CaptureService.cpp, function closeSource(), line 580)
Mar 17 16:02:53 ovp93x nvargus-daemon[884]: SCF: Error InvalidState:  (propagating from src/api/Session.cpp, function shutdown(), line 507)
Mar 17 16:02:53 ovp93x nvargus-daemon[884]: SCF: Error InvalidState:  (propagating from src/api/Session.cpp, function shutdown(), line 562)
Mar 17 16:02:53 ovp93x nvargus-daemon[884]: SCF: Error InvalidState:  (propagating from src/api/CameraDriver.cpp, function deleteSession(), line 740)
Mar 17 16:02:53 ovp93x nvargus-daemon[884]: (Argus) Error InvalidState:  (propagating from src/api/CaptureSessionImpl.cpp, function destroy(), line 262)
Mar 17 16:02:58 ovp93x nvargus-daemon[884]: PowerServiceCore:handleRequests: timePassed = 4877
Mar 17 16:02:58 ovp93x nvargus-daemon[884]: (Argus) Error FileOperationFailed: Failed socket read: Connection reset by peer (in src/rpc/socket/common/SocketUtils.cpp, function readSocket(), line 79)
Mar 17 16:02:58 ovp93x nvargus-daemon[884]: (Argus) Error FileOperationFailed:  (propagating from libs/rpc_socket_server/ServerSocketManager.cpp, function recvThreadCore(), line 192)
Mar 17 16:02:58 ovp93x nvargus-daemon[884]: (Argus) Error FileOperationFailed:  (propagating from libs/rpc_socket_server/ServerSocketManager.cpp, function run(), line 58)
Mar 17 16:02:58 ovp93x nvargus-daemon[884]: === eugust[1233]: Connection closed (FFFF69D848C0)=== eugust[1233]: WARNING: CameraProvider was not destroyed before client connection terminated.=== eugust[1233]:          The client may have abnormally terminated. Destroying CameraProvider...=== eugust[1233]: CameraProvider destroyed (0xffff5c000c30)=== eugust[1233]: WARNING: Cleaning up 1 outstanding requests...=== eugust[1233]: WARNING: Cleaning up 1 outstanding stream settings...=== eugust[1233]: WARNING: Cleaning up 1 outstanding queues...=== eugust[1233]: WARNING: Cleaning up 1 outstanding sessions...=== eugust[1233]: WARNING: Cleaning up 1 outstanding streams...(Argus) Error InvalidState: Unknown stream deleted. (in src/api/CaptureSessionImpl.cpp, function outputStreamDeleted(), line 1106)
coredump trace
#0  0x0000ffff8863e4f8 in NvBufSurfTransformAsync () from /usr/lib/libnvbufsurftransform.so.1.0.0
#1  0x0000ffff89df8788 [PAC] in consumer_thread (src_base=0xaaaad780d770) at gstnvarguscamerasrc.cpp:2054
#2  0x0000ffff8bdecb68 [PAC] in ?? () from /usr/lib/libglib-2.0.so.0
#3  0x0000ffff8b990d24 [PAC] in ?? () from /usr/lib/libc.so.6
#4  0x0000ffff8b9f319c [PAC] in ?? () from /usr/lib/libc.so.6
#0  0x0000ffff8b98da74 in ?? () from /usr/lib/libc.so.6
#1  0x0000ffff8b9904ac [PAC] in pthread_cond_timedwait () from /usr/lib/libc.so.6
#2  0x0000ffff735b99bc [PAC] in NvOsConditionWaitTimeout () from /usr/lib/libnvos.so
#3  0x0000ffff7047b14c [PAC] in nvcamerautils::ConditionVariable::wait(nvcamerautils::Mutex const&, nvcamerautils::UnscaledTimeout const&) const () from /usr/lib/libnvcamerautils.so
#4  0x0000ffff885304dc in ?? () from /usr/lib/libnvargus_socketclient.so
#5  0x0000ffff885333c4 [PAC] in ?? () from /usr/lib/libnvargus_socketclient.so
#6  0x0000ffff88489420 [PAC] in ?? () from /usr/lib/libnvargus_socketclient.so
#7  0x0000ffff89df82c0 [PAC] in gst_nv_argus_camera_stop (src_base=0xaaaad780d770) at gstnvarguscamerasrc.cpp:1875
#8  0x0000ffff8b8b25f8 [PAC] in ?? () from /usr/lib/libgstbase-1.0.so.0
#9  0x0000ffff8b8b7fbc [PAC] in ?? () from /usr/lib/libgstbase-1.0.so.0
#10 0x0000ffff8bff6df0 [PAC] in ?? () from /usr/lib/libgstreamer-1.0.so.0
#11 0x0000ffff8bff7978 [PAC] in gst_pad_set_active () from /usr/lib/libgstreamer-1.0.so.0
#12 0x0000ffff8bfcbf2c [PAC] in ?? () from /usr/lib/libgstreamer-1.0.so.0
#13 0x0000ffff8bfe4a94 [PAC] in gst_iterator_fold () from /usr/lib/libgstreamer-1.0.so.0
#14 0x0000ffff8bfcc844 [PAC] in ?? () from /usr/lib/libgstreamer-1.0.so.0
#15 0x0000ffff8bfcec3c [PAC] in ?? () from /usr/lib/libgstreamer-1.0.so.0
#16 0x0000ffff8bfcef48 [PAC] in ?? () from /usr/lib/libgstreamer-1.0.so.0
#17 0x0000ffff8b8b5908 [PAC] in ?? () from /usr/lib/libgstbase-1.0.so.0
#18 0x0000ffff8bfd147c [PAC] in gst_element_change_state () from /usr/lib/libgstreamer-1.0.so.0
#19 0x0000ffff8bfd1aa8 [PAC] in ?? () from /usr/lib/libgstreamer-1.0.so.0
#20 0x0000ffff8bfa9f88 [PAC] in ?? () from /usr/lib/libgstreamer-1.0.so.0
#21 0x0000ffff8bfd147c [PAC] in gst_element_change_state () from /usr/lib/libgstreamer-1.0.so.0
#22 0x0000ffff8bfd1504 [PAC] in gst_element_change_state () from /usr/lib/libgstreamer-1.0.so.0
#23 0x0000ffff8bfd1aa8 [PAC] in ?? () from /usr/lib/libgstreamer-1.0.so.0
#24 0x0000ffff8dd86c20 [PAC] in ifm::gst::wrapper::Pipeline::setState (this=0xaaaad77131b0, state=<optimized out>, state@entry=GST_STATE_READY) at /mnt/source/src/libeugust/src/GstPipelineWrapper.cpp:104
#0  0x0000ffff8b9e922c in poll () from /usr/lib/libc.so.6
#1  0x0000ffff88534548 [PAC] in ?? () from /usr/lib/libnvargus_socketclient.so
#2  0x0000ffff8852fb9c [PAC] in ?? () from /usr/lib/libnvargus_socketclient.so
#3  0x0000ffff885302dc [PAC] in ?? () from /usr/lib/libnvargus_socketclient.so
#4  0x0000ffff8b990d24 [PAC] in ?? () from /usr/lib/libc.so.6
#5  0x0000ffff8b9f319c [PAC] in ?? () from /usr/lib/libc.so.6
#0  0x0000ffff8b98da74 in ?? () from /usr/lib/libc.so.6
#1  0x0000ffff8b9904ac [PAC] in pthread_cond_timedwait () from /usr/lib/libc.so.6
#2  0x0000ffff735b99bc [PAC] in NvOsConditionWaitTimeout () from /usr/lib/libnvos.so
#3  0x0000ffff7047b14c [PAC] in nvcamerautils::ConditionVariable::wait(nvcamerautils::Mutex const&, nvcamerautils::UnscaledTimeout const&) const () from /usr/lib/libnvcamerautils.so
#4  0x0000ffff885304dc in ?? () from /usr/lib/libnvargus_socketclient.so
#5  0x0000ffff885333c4 [PAC] in ?? () from /usr/lib/libnvargus_socketclient.so
#6  0x0000ffff88489420 [PAC] in ?? () from /usr/lib/libnvargus_socketclient.so
#7  0x0000ffff89dfc334 [PAC] in ArgusCamera::execute (cameraIndex=<optimized out>, cameraMode=<optimized out>, streamSize=..., secToRun=<optimized out>, src=src@entry=0xaaaad780d770)
    at gstnvarguscamerasrc.cpp:1388
#8  0x0000ffff89dfd000 [PAC] in argus_thread (src_base=0xaaaad780d770) at gstnvarguscamerasrc.cpp:1909
#9  0x0000ffff8bdecb68 [PAC] in ?? () from /usr/lib/libglib-2.0.so.0
#10 0x0000ffff8b990d24 [PAC] in ?? () from /usr/lib/libc.so.6
#11 0x0000ffff8b9f319c [PAC] in ?? () from /usr/lib/libc.so.6
#0  0x0000ffff8b9f1064 in syscall () from /usr/lib/libc.so.6
#1  0x0000ffff8be1d5c4 in g_cond_wait_until () from /usr/lib/libglib-2.0.so.0
#2  0x0000ffff8bd849d0 [PAC] in ?? () from /usr/lib/libglib-2.0.so.0
#3  0x0000ffff8bd85190 [PAC] in g_async_queue_timeout_pop () from /usr/lib/libglib-2.0.so.0
#4  0x0000ffff8bded72c [PAC] in ?? () from /usr/lib/libglib-2.0.so.0
#5  0x0000ffff8bdecb68 [PAC] in ?? () from /usr/lib/libglib-2.0.so.0
#6  0x0000ffff8b990d24 [PAC] in ?? () from /usr/lib/libc.so.6
#7  0x0000ffff8b9f319c [PAC] in ?? () from /usr/lib/libc.so.6
#0  0x0000ffff8b98da74 in ?? () from /usr/lib/libc.so.6
#1  0x0000ffff8b9902cc [PAC] in pthread_cond_wait () from /usr/lib/libc.so.6
#2  0x0000ffff6f05b610 [PAC] in ?? () from /usr/lib/libEGL_nvidia.so.0
#3  0x0000ffff6f05b694 in ?? () from /usr/lib/libEGL_nvidia.so.0
#4  0x0000ffff6f00f8ec in ?? () from /usr/lib/libEGL_nvidia.so.0
#5  0x0000ffff6efd9edc in ?? () from /usr/lib/libEGL_nvidia.so.0
#6  0x0000ffff88470000 in ?? () from /usr/lib/libnvargus_socketclient.so
#7  0x0000ffff8847019c [PAC] in ?? () from /usr/lib/libnvargus_socketclient.so
#8  0x0000ffff735b9b78 [PAC] in ?? () from /usr/lib/libnvos.so
#9  0x0000ffff8b990d24 [PAC] in ?? () from /usr/lib/libc.so.6
#10 0x0000ffff8b9f319c [PAC] in ?? () from /usr/lib/libc.so.6
#0  0x0000ffff8b9f5560 in recv () from /usr/lib/libc.so.6
#1  0x0000ffff6f01a764 [PAC] in ?? () from /usr/lib/libEGL_nvidia.so.0
#2  0x0000ffff6f01b5d4 in ?? () from /usr/lib/libEGL_nvidia.so.0
#3  0x0000ffff6f011058 in ?? () from /usr/lib/libEGL_nvidia.so.0
#4  0x0000ffff735b9b78 in ?? () from /usr/lib/libnvos.so
#5  0x0000ffff8b990d24 [PAC] in ?? () from /usr/lib/libc.so.6
#6  0x0000ffff8b9f319c [PAC] in ?? () from /usr/lib/libc.so.6
#0  0x0000ffff8b9e922c in poll () from /usr/lib/libc.so.6
#1  0x0000ffff70e5f2b0 [PAC] in ?? () from /usr/lib/libcuda.so.1
#2  0x0000ffff70efc640 in ?? () from /usr/lib/libcuda.so.1
#3  0x0000ffff70e5c0e4 in ?? () from /usr/lib/libcuda.so.1
#4  0x0000ffff8b990d24 in ?? () from /usr/lib/libc.so.6
#5  0x0000ffff8b9f319c [PAC] in ?? () from /usr/lib/libc.so.6
#0  0x0000ffff8b9f1064 in syscall () from /usr/lib/libc.so.6
#1  0x0000ffff8be1d5c4 in g_cond_wait_until () from /usr/lib/libglib-2.0.so.0
#2  0x0000ffff8bd849d0 [PAC] in ?? () from /usr/lib/libglib-2.0.so.0
#3  0x0000ffff8bded84c [PAC] in ?? () from /usr/lib/libglib-2.0.so.0
#4  0x0000ffff8bdecb68 [PAC] in ?? () from /usr/lib/libglib-2.0.so.0
#5  0x0000ffff8b990d24 [PAC] in ?? () from /usr/lib/libc.so.6
#6  0x0000ffff8b9f319c [PAC] in ?? () from /usr/lib/libc.so.6

Just to let you know, I’ll be out of the office next week and won’t be back until March 16.

How to reproduce by gst-launch-1.0 command line?

Thanks