Same timeout patch applied to 35.6 for L4T-35.5

We had an issue that noise in camera cause pipeline using nvarguscamerasrc hangs and we had to restart both our application and nvargus-daemon. After testing some different solutions we found the solution for our needs: we used L4T-35.6 and run nvargus-daemon using enableCamInfiniteTimeout=1 and also we used event-wait. Same solution don’t work with L4T-35.5.

Now because driver for imx477 on L4T-35.6 don’t support 12Mpix but it supports 12Mpix on L4T-35.5, we need to use L4T-35.5.

Now the question:
Do you have available camera-rtcpu-t194-rce.img, libnvargus.so and … that has same patch applied to L4T-35.6?

Do you need solution for 35.5 or 35.6??

You can try these.

libnvargus.so.35.5 (1.2 MB)
libnvargus_socketserver.so.35.5 (2.4 MB)
libnvscf.so.r35.5.inifite.txt (8.4 MB)

Thanks I will test them, ASAP.

I replaced these files but issue wasn’t fixed.

What’s the error log?

Run
$ sudo nvargus-daemon --log-level=DEBUG
and then run
$ gst-launch-1.0 nvarguscamerasrc ! queue ! 'video/x-raw(memory:NVMM), width=(int)720, height=(int)576, format=(string)NV12, framerate=(fraction)30/1' ! nvvidconv ! autovideosink
Output of nvargus-daemon BEFORE noise:

=== gst-launch-1.0[5038]: Connection established (FFFFAB281900)OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module0
OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module1
NvPclHwGetModuleList: No module data found
NvPclHwGetModuleList: No module data found
OFParserGetVirtualDevice: NVIDIA Camera virtual enumerator not found in proc device-tree
---- imager: No override file found. ----
(NvCamV4l2) Error ModuleNotPresent: V4L2Device not available (in /dvs/git/dirty/git-master_linux/camera/utils/nvcamv4l2/v4l2_device.cpp, function findDevice(), line 257)
(NvCamV4l2) Error ModuleNotPresent:  (propagating from /dvs/git/dirty/git-master_linux/camera/utils/nvcamv4l2/v4l2_device.cpp, function initialize(), line 61)
(NvOdmDevice) Error ModuleNotPresent:  (propagating from dvs/git/dirty/git-master_linux/camera-partner/imager/src/devices/V4L2SensorViCsi.cpp, function initialize(), line 112)
NvPclDriverInitializeData: Unable to initialize driver v4l2_sensor
NvPclInitializeDrivers: error: Failed to init camera sub module v4l2_sensor
NvPclStartPlatformDrivers: Failed to start module drivers
NvPclDriver_V4L2_Focuser_Stub_Close: Invalid NULL input pPclDriver
NvPclStateControllerOpen: Failed ImagerGUID 1. (error 0xA000E)
NvPclOpen: PCL Open Failed. Error: 0xf
SCF: Error BadParameter: Sensor could not be opened. (in src/services/capture/CaptureServiceDeviceSensor.cpp, function getSourceFromGuid(), line 726)
SCF: Error BadParameter:  (propagating from src/services/capture/CaptureService.cpp, function addSourceByGuid(), line 453)
SCF: Error BadParameter:  (propagating from src/api/CameraDriver.cpp, function addSourceByIndex(), line 347)
SCF: Error BadParameter:  (propagating from src/api/CameraDriver.cpp, function getSource(), line 519)
---- imager: No override file found. ----
=== gst-launch-1.0[5038]: CameraProvider initialized (0xffffa460fa10)SCF: Error BadValue: NvPHSSendThroughputHints (in src/common/CameraPowerHint.cpp, function sendCameraPowerHint(), line 56)
=== gst-launch-1.0[5038]: CameraProvider destroyed (0xffffa460fa10)=== gst-launch-1.0[5038]: Connection closed (FFFFAB281900)=== gst-launch-1.0[5038]: Connection cleaned up (FFFFAB281900)=== gst-launch-1.0[5103]: Connection established (FFFFAB281900)OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module0
OFParserListModules: module list: /proc/device-tree/tegra-camera-platform/modules/module1
NvPclHwGetModuleList: No module data found
NvPclHwGetModuleList: No module data found
OFParserGetVirtualDevice: NVIDIA Camera virtual enumerator not found in proc device-tree
---- imager: No override file found. ----
(NvCamV4l2) Error ModuleNotPresent: V4L2Device not available (in /dvs/git/dirty/git-master_linux/camera/utils/nvcamv4l2/v4l2_device.cpp, function findDevice(), line 257)
(NvCamV4l2) Error ModuleNotPresent:  (propagating from /dvs/git/dirty/git-master_linux/camera/utils/nvcamv4l2/v4l2_device.cpp, function initialize(), line 61)
(NvOdmDevice) Error ModuleNotPresent:  (propagating from dvs/git/dirty/git-master_linux/camera-partner/imager/src/devices/V4L2SensorViCsi.cpp, function initialize(), line 112)
NvPclDriverInitializeData: Unable to initialize driver v4l2_sensor
NvPclInitializeDrivers: error: Failed to init camera sub module v4l2_sensor
NvPclStartPlatformDrivers: Failed to start module drivers
NvPclDriver_V4L2_Focuser_Stub_Close: Invalid NULL input pPclDriver
NvPclStateControllerOpen: Failed ImagerGUID 1. (error 0xA000E)
NvPclOpen: PCL Open Failed. Error: 0xf
SCF: Error BadParameter: Sensor could not be opened. (in src/services/capture/CaptureServiceDeviceSensor.cpp, function getSourceFromGuid(), line 726)
SCF: Error BadParameter:  (propagating from src/services/capture/CaptureService.cpp, function addSourceByGuid(), line 453)
SCF: Error BadParameter:  (propagating from src/api/CameraDriver.cpp, function addSourceByIndex(), line 347)
SCF: Error BadParameter:  (propagating from src/api/CameraDriver.cpp, function getSource(), line 519)
---- imager: No override file found. ----
=== gst-launch-1.0[5103]: CameraProvider initialized (0xffffa4ebf0d0)

Output of gst-launch-1.0 BEFORE noise:

Setting pipeline to PAUSED ...
Pipeline is live and does not need PREROLL ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
GST_ARGUS: Creating output stream
CONSUMER: Waiting until producer is connected...
GST_ARGUS: Available Sensor modes :
GST_ARGUS: 3840 x 2160 FR = 29.999999 fps Duration = 33333334 ; Analog Gain range min 1.000000, max 22.250000; Exposure Range min 13000, max 683709000;

GST_ARGUS: 1920 x 1080 FR = 59.999999 fps Duration = 16666667 ; Analog Gain range min 1.000000, max 22.250000; Exposure Range min 13000, max 683709000;

GST_ARGUS: Running with following settings:
   Camera index = 0 
   Camera mode  = 1 
   Output Stream W = 1920 H = 1080 
   seconds to Run    = 0 
   Frame Rate = 59.999999 
GST_ARGUS: Setup Complete, Starting captures for 0 seconds
GST_ARGUS: Starting repeat capture requests.
CONSUMER: Producer has connected; continuing.

Now everything works but when there is noise:
Output of nvargus-daemon AFTER noise:

SCF: Error InvalidState: Timeout!! Skipping requests on sensor GUID 0, capture sequence ID = 836 draining session frameStart events 2
 (in src/services/capture/FusaCaptureViCsiHw.cpp, function waitCsiFrameStart(), line 531)
SCF: Error Timeout: Sending critical error event for Session 0 
 (in src/api/Session.cpp, function sendErrorEvent(), line 1039)
SCF: Error InvalidState: Sensor GUID 0 is in error state. Skipping requests, capture sequence ID = 837 continue draining session frameStart events 1
 (in src/services/capture/FusaCaptureViCsiHw.cpp, function waitCsiFrameStart(), line 545)
SCF: Error InvalidState: Sensor 0 already in same state 
 (in src/services/capture/CaptureServiceDeviceSensor.cpp, function setErrorState(), line 100)
SCF: Error InvalidState: Timeout!! Skipping requests on sensor GUID 0, capture sequence ID = 836 draining session frameEnd events 2
 (in src/services/capture/FusaCaptureViCsiHw.cpp, function waitCsiFrameEnd(), line 648)
SCF: Error Timeout:  (propagating from src/services/capture/CaptureServiceDeviceViCsi.cpp, function waitCompletion(), line 368)
SCF: Error Timeout:  (propagating from src/services/capture/CaptureServiceDevice.cpp, function pause(), line 1034)
SCF: Error Timeout: During capture abort, syncpoint wait timeout waiting for current frame to finish (in src/services/capture/CaptureServiceDevice.cpp, function handleCancelSourceRequests(), line 1129)
SCF: Error BadParameter: CC has already been disposed (in src/components/CaptureContainerManager.cpp, function dispose(), line 161)
SCF: Error InvalidState: Timeout!! Skipping requests on sensor GUID 0, capture sequence ID = 837 draining session frameEnd events 1
 (in src/services/capture/FusaCaptureViCsiHw.cpp, function waitCsiFrameEnd(), line 648)
SCF: Error BadParameter: CC has already been disposed (in src/components/CaptureContainerManager.cpp, function dispose(), line 161)

Output of gst-launch-1.0 AFTER noise:

CONSUMER: Done Success
Got EOS from element "pipeline0".
Execution ended after 0:00:32.588922787
Setting pipeline to NULL ...
GST_ARGUS: Cleaning up
GST_ARGUS: Done Success
(Argus) Error Timeout:  (propagating from src/rpc/socket/client/ClientSocketManager.cpp, function send(), line 137)
(Argus) Error Timeout:  (propagating from src/rpc/socket/client/SocketClientDispatch.cpp, function dispatch(), line 91)
Freeing pipeline ...
(Argus) Error Timeout:  (propagating from src/rpc/socket/client/ClientSocketManager.cpp, function send(), line 137)
(Argus) Error Timeout:  (propagating from src/rpc/socket/client/SocketClientDispatch.cpp, function dispatch(), line 91)
(Argus) Error InvalidState: Argus client is exiting with 2 outstanding client threads (in src/rpc/socket/client/ClientSocketManager.cpp, function recvThreadCore(), line 366)

Run with enableCamInfiniteTimeout=1
$ sudo enableCamInfiniteTimeout=1 nvargus-daemon --log-level=DEBUG
and then run
$ gst-launch-1.0 nvarguscamerasrc ! queue ! 'video/x-raw(memory:NVMM), width=(int)720, height=(int)576, format=(string)NV12, framerate=(fraction)30/1' ! nvvidconv ! autovideosink
After noise nvargus-daemon has not any output and gst-launch-1.0 after ~1min gives this output:

(Argus) Error Timeout:  (propagating from src/rpc/socket/client/ClientSocketManager.cpp, function send(), line 137)
(Argus) Error Timeout:  (propagating from src/rpc/socket/client/SocketClientDispatch.cpp, function dispatch(), line 91)
CONSUMER: Done Success
Got EOS from element "pipeline0".
Execution ended after 0:00:25.656464891
Setting pipeline to NULL ...
GST_ARGUS: Cleaning up
Caught SIGSEGV
Spinning.  Please run 'gdb gst-launch-1.0 5187' to continue debugging, Ctrl-C to quit, or Ctrl-\ to dump core.

Using event-wait=8000000000 don’t change outputs. In both situation after crash I have to restart nvargus-daemon.

For your case I would suggest using MMAPI sample like argus_camera to build by “'cmake -DDISABLE_MULTIPROCESS=ON …” to link to the camera libs instead through nvargus socket.

1 Like