Setup
- Board: Jetson Orin Nano
- JetPack 6.2 - L4T R36.4.4, kernel 5.15.148-tegra
- Camera: onsemi AR2020 MIPI-CSI (sensor-id 4)
- Capture: nvarguscamerasrc sensor-id=4 ! video/x-raw(memory:NVMM),width=5120,height=3840,format=NV12,framerate=10/1, running continuously
Problem
After a long period of continuous streaming, the camera can no longer be opened. Every attempt to create a capture session fails immediately, and nvargus-daemon repeats the following two errors (~2× per second, ~250 in 5 minutes). Our client
reaches PLAYING, receives no frames, EOS’s, and retries in a loop. The state does not clear on its own - the client and container can be restarted indefinitely and it keeps failing. The only recovery is sudo systemctl restart nvargus-daemon.
nvargus-daemon logs (repeating):
(Argus) Error InvalidState: CaptureProvider destroyed
(in src/api/CameraProviderImpl.cpp, function createCaptureSessionInternal(), line 260)
(Argus) Error InvalidState: Object was already destroyed
(in src/common/ObjectImpl.cpp, function destroyClientReference(), line 47)
Each cycle looks like: Connection established → CameraProvider initialized → (Argus) Error InvalidState: CaptureProvider destroyed, then CameraProvider destroyed → Object was already destroyed, then the client disconnects and retries.
Recovery: sudo systemctl restart nvargus-daemon clears it; restarting only the client application does not.
Questions
- What causes the CaptureProvider / internal Argus object to become “destroyed” such that all subsequent createCaptureSessionInternal() calls return InvalidState?
- Once in this state, is there any way for a client to recover the CameraProvider without restarting nvargus-daemon?
- Are there known fixes for this in a newer L4T r36.x