Summary
On L4T r36.5.0 (JetPack 6.2.2), nvargus-daemon throws a FUSA VI handler error — fusaViHandler.cpp:869 “Status syncpoint signaled but status value not updated” → Error 8 — simultaneously on all 6 GMSL2 sensors, after which every capture session is disposed and the libargus client connection is reset. In our case the daemon does not crash (it stays alive, NRestarts=0, no core) but all sessions become permanently unusable until the client process is fully restarted. This reproduces on the stock 5.15.185-tegra kernel (non-PREEMPT_RT) via the ZED SDK / libargus client path (no GStreamer).
Related / prior reports (same defect)
libnvscf.soCaptureScheduler deadlock persists on JP 6.2.2 / L4T r36.5.0 — Libnvscf.so CaptureScheduler deadlock persists on JP 6.2.2 / L4T r36.5.0 — gdb backtrace + resource timeline attached
Same fusaViHandler.cpp:869 / Error 8 signature; that thread documents a deadlock/wedge variant and a SIGSEGV variant with a gdb backtrace pointing at a lost wakeup in libnvscf.so CaptureScheduler. This report is the same defect on the stock (non-RT) kernel, daemon-survives form.
- Context for our kernel choice (RT-kernel packages unavailable for r36.5.0): Missing l4t-jetpack Docker image and RT kernel packages for L4T 36.5 / JetPack 6.2.2
Same libnvscf.so binary as the prior thread
-
Build ID
a4b275ab3966399e8ea8c78a9ba46a9a3542641d -
sha256
944bf7830e342181c0e92361375753762889b643dbcaba6672d63cd002bfcd20
These match the binaries posted in #366870 — i.e. the stock L4T r36.5.0 (GCID 43688277) libnvscf.so.
Setup
| | |
|—|—|
| Platform | Jetson AGX Orin Developer Kit |
| L4T / JetPack | R36.5.0, GCID 43688277 (# R36 (release), REVISION: 5.0, 2026-01-16) |
| Kernel | 5.15.185-tegra (stock, NON-PREEMPT_RT) |
| libargus | NVIDIA Libargus Camera Service 0.99.33 |
| Capture client | ZED SDK 5.3.0 via the libargus client (NOT nvarguscamerasrc/GStreamer) |
| GMSL driver | stereolabs-zedlink-quad 1.4.2-SL-MAX96712-L4T36.5.0 (MAX96712 deser + MAX9295 ser) |
| Cameras | 3× ZED X stereo = 6 sensors, GMSL2, 1920×1080 @ 30 fps, 6 concurrent sessions |
Trigger & timing
-
Continuous capture, all 6 sensors streaming concurrently (1080p30), auto-exposure locked at session start.
-
Stochastic timing. One session hit the error ~3 minutes in (start
06:07:34, first FUSA error06:10:40); a separate session ran 13+ minutes with no failure. So it can strike well under the 8–13 min seen elsewhere on the ZED SDK path, but it is not deterministic — consistent with a load/timing race, not a fixed-time fault. -
When it occurs, onset is immediate and simultaneous across all 6 sensors, not gradual per-camera degradation.
nvargus-daemon log at onset
(fusa) Error: InvalidState Status syncpoint signaled but status value not updated in:/capture/src/fusaViHandler.cpp 869
(fusa) Error: InvalidState propagating from:/capture/src/fusaViHandler.cpp 811
SCF: Error InvalidState: Error 8 Received for sensor 1 ..!
(in src/services/capture/FusaCaptureViCsiHw.cpp, function waitCsiFrameEnd(), line 664)
SCF: Error InvalidState: Sending critical error event for Session 0
(in src/api/Session.cpp, function sendErrorEvent(), line 1101)
SCF: Error InvalidState: Error 8 Received for sensor 4 ..!
SCF: Error InvalidState: Error 8 Received for sensor 5 ..!
SCF: Error InvalidState: Error 8 Received for sensor 0 ..!
SCF: Error InvalidState: Error 8 Received for sensor 3 ..!
SCF: Error InvalidState: Error 8 Received for sensor 2 ..!
... (Error 8 + waitCsiFrameEnd():664 repeats for every sensor)
SCF: Error BadParameter: CC has already been disposed (in src/components/CaptureContainerManager.cpp, function dispose(), line 161)
libargus client (ZED SDK) side — connection lost, cannot reconnect
(Argus) Error FileOperationFailed: Failed socket read: Connection reset by peer (SocketUtils.cpp::readSocket(), line 79)
(Argus) Error FileOperationFailed: Connecting to nvargus-daemon failed: Connection refused (SocketClientDispatch.cpp::openSocketConnection(), line 205)
(Argus) Error FileOperationFailed: Cannot create camera provider
After this, every Camera::grab() fails permanently on all 6 sensors (within ~1 s of each other). Because the libargus client is a process-global singleton, the only recovery is a full restart of the client process.
Key distinction: the daemon does NOT crash
systemctl show nvargus-daemon reports NRestarts=0, Result=success, no SIGSEGV and no core dump for this event — yet all sessions are disposed and the client socket is dead. This is the “wedge / sessions-UNAVAILABLE” manifestation from #366870, here on the non-RT kernel and via the ZED SDK path. It fits the lost-wakeup theory in that thread: the FUSA error path at fusaViHandler.cpp:869 does not signal downstream waiters, so sessions never recover.
Questions
-
Does a repro on the stock
5.15.185-tegrakernel (no PREEMPT_RT) help isolate the lost wakeup? It rules out an RT-scheduler-only timing window. -
The
nvarguscamerasrcpatch referenced in #366870 — does it touch the libargus client /libnvscfCaptureScheduler path that the ZED SDK uses? We use no GStreamer yet hit the identicalfusaViHandler.cpp:869/Error 8, so a GStreamer-plugin-only fix would not help. -
Is there a supported way to disable the FUSA VI capture path (
libnvfusacap/fusaViHandler) or set a VI syncpoint-completion timeout? We do not require functional-safety guarantees for data collection. -
Stock
argus_camera_jpegreportedly runs for many hours without this fault. Is the difference a capture-request pattern (buffer / output-stream count, request cadence, ISP/AE usage) we could mirror through the ZED SDK to avoid the syncpoint race? Any guidance on a safe concurrency/throughput envelope for 6× 1080p30 GMSL2 would help.
I can attach the full nvargus-daemon journal, the libargus client log, and systemctl show nvargus-daemon for this event on request.