WARNING Argus: 8 client objects still exist during shutdown when exit app

Hi,

I’m using TX2NX (but I think this is applied for all Jetson platforms), JP 4.6.2.

I’m developing a application which reading buffer from image sensor using libargus. It is similar to 10_camera_recording sample, but having more threads for different processing and capable to stop reading then start again with same run.

I use one instance of CameraProvider for whole app, but done a full initialization & deinitialization for a reading session (initialize when start reading, deinit all when stop reading).

It works fine, except this warning when the app quits:

WARNING Argus: 2 client objects still exist during shutdown:
        547568700216 (0x7f78001248)
        547572456544 (0x7f7c003820)

Looks like something is not completely cleared.

How do I know what is remaining to be clean? Is there any log in nvargus-daemon can show likes a list of objects that are not destroyed when the app quits?

Thank you for reading.

hello Hnil.DN,

you may following below to enable Argus daemon logs.
for example,

$ sudo su 
# pkill nvargus-daemon
# nvargus-daemon
or.. # nvargus-daemon 2>&1 | tee argus-output.log

how you quit the application? are you using ctrl^c to send an interrupt to terminate the process?

Hi Jerry,

Please see argus-daemon log with enableCamScfLogs=5 and enableCamPclLogs=5.
argus-output.log (1.3 MB)

My test app is start & stop camera reading 4 times. I referenced from gst-nvarguscamerasrc code. My app quit internally after test finished (I also have Ctrl+C signal catching and deinitialize everything same as test finished).
When my test app quits, I saw this warning:

INF 00505:            argusThreadHandler() RDR Argus thread FINISHED
DBG 00090:                    setRunning() IBI set to stop 1 -> 0 1 0x5586579ec0
DBG 00062:                  ~ImageReader() RDR provider reset
DBG 00065:                  ~ImageReader() RDR 
INF 00161:                          main() TST System quit
WARNING Argus: 8 client objects still exist during shutdown:
        548024059936 (0x7f98000f90)
        548024071200 (0x7f980034b0)
        548024079512 (0x7f98002968)
        548024106072 (0x7f980029d8)
        548024186376 (0x7f98001b68)
        548025045568 (0x7f98002b40)
        548025277312 (0x7f980037e0)
        548025285560 (0x7f980039b8)

The number of objects that were still existed will be number of start/stop * 2. So, every start/stop time will have 2 objects that is not cleared.

From the nvargus-daemon log, can you please point out which argus objects is not destroyed?

Thank you.

hello Hnil.DN,

did you also seeing the same failure when app quits with default sample app 10_camera_recording?

the failure is related to client object did not destroy,
here’s the object allocation for example,

    /* Create the OutputStream */
    PRODUCER_PRINT("Creating output stream\n");
    UniqueObj<OutputStreamSettings> streamSettings(
        iCaptureSession->createOutputStreamSettings(STREAM_TYPE_BUFFER));
    IBufferOutputStreamSettings *iStreamSettings =
        interface_cast<IBufferOutputStreamSettings>(streamSettings);

Hi Jerry,

No, I don’t see that warning with 10_camera_recording, it works fine. It is very simple sample.

My app is much more complicated with multiple threads, I know it is the case that objects are not destroyed, but is there a way to know which objects are not destroyed from the log file? That is my question.

the log files doesn’t give more clues. you may dig into the code implementation to review the client objects.

1 Like

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.