Nodelet connection closed

When I shutdown my ROS nodelet, the nvargus-daemon (with infinite timeout enabled) logs === nodelet[18913]: Connection closed (7FAB1201D0), and enters an uninterruptible sleep which requires the Xavier to be rebooted.

Can this be avoided?

Not sure if you can have another console to run

$ sudo service nvargus-daemon restart

Or try to kill the nvargus-daemon process and restart it like:

$ sudo service nvargus-daemon restart

Hi @DaneLLL,
Neither of those suggestions worked.
The nvargus daemon is in uninterruptible sleep and therefore cannot be killed.

The issue looks specific to using infinite timeout. Are you able not to run in this mode?

Unfortunately not. I have explained the use case in another post:

Infinite timeout is for debugging purpose and it may not be good to enable it in real use-case. We would suggest use default timeout=2500ms.

As specified in the use case, the program won’t work without the infinite timeout. Can you provide a patch to stop the nvargus daemon from entering an uninterruptible sleep?

Continuing this thread, my application is hanging on:


and then after N seconds, roslaunch will SIGTERM the application, leaving argus to report the error:

SCF: Error InvalidState: 4 buffers still pending during EGLStreamProducer destruction (propagating from src/services/gl/EGLStreamProducer.cpp, function freeBuffers(), line 309)
SCF: Error InvalidState:  (propagating from src/services/gl/EGLStreamProducer.cpp, function ~EGLStreamProducer(), line 50)

Increasing N doesn’t help, as waitForIdle() will wait forever. How do I manually empty the “buffer” so that it can be empty during the EGLStreamProducer destruction?

There is no method to manually empty the buffer. Have you disabled infinite timeout? There is error resilience and once timeout happens in capturing frame data, it shall catch the error and terminate gracefully.

I cannot disable infinite timeout. Is there a workaround that I can use to empty the buffer?