Tx2-4g R32.3.1 nvargus-daemon does not restart 100% of the time

The issue with nvargus-daemon can be reproduced with any camera and is not vendor or configuration specific. The main requirement is at least two cameras streaming simultaneously over the CSI bus.

We have reproduced the nvargus-daemon lock-up issue with several cameras. One particular camera is the Leopard Imaging AR0231 FPD-Link III camera (LI-JEVA-AR0231-FPDLINKIII). The AR0231 is a 1928x1208 30FPS camera. Having two of these stream with Gstreamer to a fakesink is enough to reproduce the issue. We have also reproduced the issue with two other image sensors and camera modules. The problem has nothing to do with a given image sensor. The problem is in the handling of errors within nvargus-daemon. A design can never prevent every sort of error from occurring. However, nvargus-daemon should not deadlock the video pipeline. Even if it cannot properly handle an error condition it should gracefully restart itself instead of deadlocking the video pipeline system and preventing future restarts of Gstreamer from ever working.

Here are the steps to reproduce:

  1. Stream two or more cameras (CSI based sensor) using Gstreamer
    gst-launch-1.0 -v nvarguscamerasrc sensor-id=0 sensor-mode=0 ! 'video/x-raw(memory:NVMM),width=1920,height=1080,format=NV12' ! fakesink nvarguscamerasrc sensor-id=1 sensor-mode=0 ! 'video/x-raw(memory:NVMM),width=1920,height=1080,format=NV12' ! fakesink
  2. Disconnect either camera while streaming

These steps will cause nvargus-daemon to deadlock and prevent any future execution of gst-launch-1.0 from working properly, until nvargus-daemon is manually restarted.

There’s no need to debug the frame end signal not being correctly captured - bad stuff happens all the time in the real world. The occasional problem in the the CSI communication is expected. The deadlock of nvargus-dameon is the problem. No amount of work to fix the CSI communication will fix the unfortunate event where an error condition does occur, and nvargus-daemon locks up. How can we fix nvargus-daemon to handle the “frame end signal” and not deadlock the video pipeline with two or more cameras streaming simultaneously?

If you need me to run a special build of nvargus-daemon to instrument out more data and let you know exactly where it is deadlocking and failing to restart, I can certainly do that. This will help you fix the issue in nvargus-daemon so that it can restart itself entirely or properly cleanup resources so that the video pipeline can remain functional for future launches of Gstreamer.

Not sure Jetson CSI supports this by default. I may be wrong, but I don’t think it is hot pluggable, although it might work in some cases.

We’re experiencing identical issues. Trying to run multiple cameras, we are encountering camera blackouts and occasional crashes, identical to what Terry has been seeing, and we’re using completely different cameras from Vision Components.

It is not an intended use case. There is no desire to hot plug the camera. This is a way to reproduce the issue easily for any camera system that has a cable going between the camera and the board (i.e., SerDes, FPD-Link, GMSL, CSI ribbon cable, etc.). The actual real scenario is ESD, electrical noise, vibration, shock, and cosmic rays.

Here are some other ways you can reproduce the issue without physically disconnecting the camera while streaming:

  • Disconnect camera power (i.e., i2c write or GPIO)
  • Reset image sensor
  • Inject error(s) on the CSI packets
  • Change the image sensor clock
  • Change the image sensor (CSI transmitter) settings to cause an error
  • Et cetera

Hi,
On r32.5.1, we have error handling code in nvarguscamerasrc:

    if (iEvent->getEventType() == EVENT_TYPE_ERROR)
    {
      if (src->stop_requested == TRUE)
        break;

      src->argus_in_error = TRUE;
      const IEventError* iEventError = interface_cast<const IEventError>(event);
      Status argusStatus = iEventError->getStatus();
      error = g_error_new (domain, argusStatus, getStatusString(argusStatus));
      GstMessage *message = gst_message_new_error (GST_OBJECT(src), error, "Argus Error Status");
      gst_element_post_message (GST_ELEMENT_CAST(src), message);
      g_mutex_lock (&src->argus_buffers_queue_lock);
      src->stop_requested = TRUE;
      g_mutex_unlock (&src->argus_buffers_queue_lock);
      break;
    }

When the camera board is removed, you should receiver Argus error status and can exit the application. Or in certain cases, no error is reported from Argus?

hello JDSchroeder,

had you tried with Argus sample applications to reproduce the same?
for example, Argus/samples/userAutoExposure

here’s an FYI,
camera stack by design has a single CaptureService thread to submit request for all captures on all active sessions.

for example,
in your dual camera use-case, let’s say cam-A and cam-B.
camera stack expect all sensors (i.e. both cam-A and cam-B) should have same start-up time. if cam-A has a delayed frame, it would impact the capture submission on other sessions, cam-B.
you could have a WAR for the slower sensor to be triggered first to buy some time for another camera sensor.

How about my problem of nvarguscamerasrc not building on r32.3.1, deepstream did not load, what next?

Terry

hello terrysu50z,

may I know what’s your topic-id for this specific issue,
let’s tracking your failure there. thanks

Sometimes gst-launch-1.0 will get an error from nvarguscamerasrc and shutdown gracefully, other times it will drop into gdb debug mode, and sometimes it will just hang with no message output. Either way the problem is not how to handle the application properly when the error occurs. Even if gst-launch-1.0 hangs and I do CTRL-C on it to kill it forcefully, nvargus-daemon becomes unresponsive. Simply launching another instance of Gstreamer after it has been killed does not work because nvargus-daemon is deadlocked on trying to cleanup resources or some other non-functional condition. Gstreamer can only be used properly again to stream the cameras if nvargus-daemon is restarted manually, which is where the problem is.

it is at the top of this topic-id, it has been high jacked by others.

Read this complete topic you will see add timeout to nvarguscamerasrc, build problems, followed by link problems.

Terry

too many discussions going on in the thread, how do we fix this, I still need a solution to deep stream missing on my system. Help

I am getting pressure from Management to get this fixed, it has been a year!

Terry

hello terrysu50z,

here’s Jetpack Archive to list all JetPack and its L4T release version.
according to https://developer.nvidia.com/jetpack-43-archive, l4t-r32.3.1 release it supports with DeepStream-4.0.2.
you may also check developer guide, NVIDIA DeepStream SDK, 4.0.2 Release for reference.
thanks

hello JDSchroeder,

let’s have a specific topic for r32.5.1 release to track nvargus-daemon hang for dual cam capture.
thanks

where can I get a copy of this deepstream-4.0_4.0-2_arm64.deb

Terry

@JerryChang So got deepstream to install, and nvarguscamerasrc still does not build, I turned on --verbose and this is the make output.

rm -rf gstnvarguscamerasrc.o gstnvarguscamera_utils.o libgstnvarguscamerasrc.so
g++ --verbose -c gstnvarguscamerasrc.cpp -fPIC pkg-config --cflags gstreamer-1.0 gstreamer-base-1.0 gstreamer-video-1.0 gstreamer-allocators-1.0 glib-2.0 -I./ -I…/ -I/usr/src/jetson_multimedia_api/include/ -I/usr/src/jetson_multimedia_api/argus/samples/utils/ -o gstnvarguscamerasrc.o
Using built-in specs.
COLLECT_GCC=g++
Target: aarch64-linux-gnu
Configured with: …/src/configure -v --with-pkgversion=‘Ubuntu/Linaro 7.5.0-3ubuntu1~18.04’ --with-bugurl=file:///usr/share/doc/gcc-7/README.Bugs --enable-languages=c,ada,c++,go,d,fortran,objc,obj-c++ --prefix=/usr --with-gcc-major-version-only --program-suffix=-7 --program-prefix=aarch64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-bootstrap --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-libquadmath --disable-libquadmath-support --enable-plugin --enable-default-pie --with-system-zlib --enable-multiarch --enable-fix-cortex-a53-843419 --disable-werror --enable-checking=release --build=aarch64-linux-gnu --host=aarch64-linux-gnu --target=aarch64-linux-gnu
Thread model: posix
gcc version 7.5.0 (Ubuntu/Linaro 7.5.0-3ubuntu1~18.04)
COLLECT_GCC_OPTIONS=‘-v’ ‘-c’ ‘-fPIC’ ‘-pthread’ ‘-I’ ‘/usr/include/gstreamer-1.0’ ‘-I’ ‘/usr/include/orc-0.4’ ‘-I’ ‘/usr/include/gstreamer-1.0’ ‘-I’ ‘/usr/include/glib-2.0’ ‘-I’ ‘/usr/lib/aarch64-linux-gnu/glib-2.0/include’ ‘-I’ ‘./’ ‘-I’ ‘…/’ ‘-I’ ‘/usr/src/jetson_multimedia_api/include/’ ‘-I’ ‘/usr/src/jetson_multimedia_api/argus/samples/utils/’ ‘-o’ ‘gstnvarguscamerasrc.o’ ‘-shared-libgcc’ ‘-mlittle-endian’ ‘-mabi=lp64’
/usr/lib/gcc/aarch64-linux-gnu/7/cc1plus -quiet -v -I /usr/include/gstreamer-1.0 -I /usr/include/orc-0.4 -I /usr/include/gstreamer-1.0 -I /usr/include/glib-2.0 -I /usr/lib/aarch64-linux-gnu/glib-2.0/include -I ./ -I …/ -I /usr/src/jetson_multimedia_api/include/ -I /usr/src/jetson_multimedia_api/argus/samples/utils/ -imultiarch aarch64-linux-gnu -D_GNU_SOURCE -D_REENTRANT gstnvarguscamerasrc.cpp -quiet -dumpbase gstnvarguscamerasrc.cpp -mlittle-endian -mabi=lp64 -auxbase-strip gstnvarguscamerasrc.o -version -fPIC -fstack-protector-strong -Wformat -Wformat-security -o /tmp/ccINi17c.s
GNU C++14 (Ubuntu/Linaro 7.5.0-3ubuntu1~18.04) version 7.5.0 (aarch64-linux-gnu)
compiled by GNU C version 7.5.0, GMP version 6.1.2, MPFR version 4.0.1, MPC version 1.1.0, isl version isl-0.19-GMP

GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
ignoring duplicate directory “/usr/include/aarch64-linux-gnu/c++/7”
ignoring nonexistent directory “/usr/local/include/aarch64-linux-gnu”
ignoring nonexistent directory “/usr/local/include”
ignoring nonexistent directory “/usr/lib/gcc/aarch64-linux-gnu/7/…/…/…/…/aarch64-linux-gnu/include”
ignoring duplicate directory “/usr/include/gstreamer-1.0”
#include “…” search starts here:
#include <…> search starts here:
/usr/include/gstreamer-1.0
/usr/include/orc-0.4
/usr/include/glib-2.0
/usr/lib/aarch64-linux-gnu/glib-2.0/include
./
…/
/usr/src/jetson_multimedia_api/include/
/usr/src/jetson_multimedia_api/argus/samples/utils/
/usr/include/c++/7
/usr/include/aarch64-linux-gnu/c++/7
/usr/include/c++/7/backward
/usr/lib/gcc/aarch64-linux-gnu/7/include
/usr/lib/gcc/aarch64-linux-gnu/7/include-fixed
/usr/include/aarch64-linux-gnu
/usr/include
End of search list.
GNU C++14 (Ubuntu/Linaro 7.5.0-3ubuntu1~18.04) version 7.5.0 (aarch64-linux-gnu)
compiled by GNU C version 7.5.0, GMP version 6.1.2, MPFR version 4.0.1, MPC version 1.1.0, isl version isl-0.19-GMP
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
Compiler executable checksum: 267235b6617dadf512d9def64c54895c
gstnvarguscamerasrc.cpp: In member function ‘virtual bool ArgusCamera::StreamConsumer::threadExecute(GstNvArgusCameraSrc*)’:
gstnvarguscamerasrc.cpp:334:77: warning: format not a string literal and no format arguments [-Wformat-security]
error = g_error_new (domain, argusStatus, getStatusString(argusStatus));
^
gstnvarguscamerasrc.cpp:356:83: warning: format not a string literal and no format arguments [-Wformat-security]
error = g_error_new (domain, frame_status, getStatusString(frame_status));
^
COLLECT_GCC_OPTIONS=‘-v’ ‘-c’ ‘-fPIC’ ‘-pthread’ ‘-I’ ‘/usr/include/gstreamer-1.0’ ‘-I’ ‘/usr/include/orc-0.4’ ‘-I’ ‘/usr/include/gstreamer-1.0’ ‘-I’ ‘/usr/include/glib-2.0’ ‘-I’ ‘/usr/lib/aarch64-linux-gnu/glib-2.0/include’ ‘-I’ ‘./’ ‘-I’ ‘…/’ ‘-I’ ‘/usr/src/jetson_multimedia_api/include/’ ‘-I’ ‘/usr/src/jetson_multimedia_api/argus/samples/utils/’ ‘-o’ ‘gstnvarguscamerasrc.o’ ‘-shared-libgcc’ ‘-mlittle-endian’ ‘-mabi=lp64’
as -v -I /usr/include/gstreamer-1.0 -I /usr/include/orc-0.4 -I /usr/include/gstreamer-1.0 -I /usr/include/glib-2.0 -I /usr/lib/aarch64-linux-gnu/glib-2.0/include -I ./ -I …/ -I /usr/src/jetson_multimedia_api/include/ -I /usr/src/jetson_multimedia_api/argus/samples/utils/ -EL -mabi=lp64 -o gstnvarguscamerasrc.o /tmp/ccINi17c.s
GNU assembler version 2.30 (aarch64-linux-gnu) using BFD version (GNU Binutils for Ubuntu) 2.30
COMPILER_PATH=/usr/lib/gcc/aarch64-linux-gnu/7/:/usr/lib/gcc/aarch64-linux-gnu/7/:/usr/lib/gcc/aarch64-linux-gnu/:/usr/lib/gcc/aarch64-linux-gnu/7/:/usr/lib/gcc/aarch64-linux-gnu/
LIBRARY_PATH=/usr/lib/gcc/aarch64-linux-gnu/7/:/usr/lib/gcc/aarch64-linux-gnu/7/…/…/…/aarch64-linux-gnu/:/usr/lib/gcc/aarch64-linux-gnu/7/…/…/…/…/lib/:/lib/aarch64-linux-gnu/:/lib/…/lib/:/usr/lib/aarch64-linux-gnu/:/usr/lib/…/lib/:/usr/lib/gcc/aarch64-linux-gnu/7/…/…/…/:/lib/:/usr/lib/
COLLECT_GCC_OPTIONS=‘-v’ ‘-c’ ‘-fPIC’ ‘-pthread’ ‘-I’ ‘/usr/include/gstreamer-1.0’ ‘-I’ ‘/usr/include/orc-0.4’ ‘-I’ ‘/usr/include/gstreamer-1.0’ ‘-I’ ‘/usr/include/glib-2.0’ ‘-I’ ‘/usr/lib/aarch64-linux-gnu/glib-2.0/include’ ‘-I’ ‘./’ ‘-I’ ‘…/’ ‘-I’ ‘/usr/src/jetson_multimedia_api/include/’ ‘-I’ ‘/usr/src/jetson_multimedia_api/argus/samples/utils/’ ‘-o’ ‘gstnvarguscamerasrc.o’ ‘-shared-libgcc’ ‘-mlittle-endian’ ‘-mabi=lp64’
g++ --verbose -c gstnvarguscamera_utils.cpp -fPIC pkg-config --cflags gstreamer-1.0 gstreamer-base-1.0 gstreamer-video-1.0 gstreamer-allocators-1.0 glib-2.0 -I./ -I…/ -I/usr/src/jetson_multimedia_api/include/ -I/usr/src/jetson_multimedia_api/argus/samples/utils/ -o gstnvarguscamera_utils.o
Using built-in specs.
COLLECT_GCC=g++
Target: aarch64-linux-gnu
Configured with: …/src/configure -v --with-pkgversion=‘Ubuntu/Linaro 7.5.0-3ubuntu1~18.04’ --with-bugurl=file:///usr/share/doc/gcc-7/README.Bugs --enable-languages=c,ada,c++,go,d,fortran,objc,obj-c++ --prefix=/usr --with-gcc-major-version-only --program-suffix=-7 --program-prefix=aarch64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-bootstrap --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-libquadmath --disable-libquadmath-support --enable-plugin --enable-default-pie --with-system-zlib --enable-multiarch --enable-fix-cortex-a53-843419 --disable-werror --enable-checking=release --build=aarch64-linux-gnu --host=aarch64-linux-gnu --target=aarch64-linux-gnu
Thread model: posix
gcc version 7.5.0 (Ubuntu/Linaro 7.5.0-3ubuntu1~18.04)
COLLECT_GCC_OPTIONS=‘-v’ ‘-c’ ‘-fPIC’ ‘-pthread’ ‘-I’ ‘/usr/include/gstreamer-1.0’ ‘-I’ ‘/usr/include/orc-0.4’ ‘-I’ ‘/usr/include/gstreamer-1.0’ ‘-I’ ‘/usr/include/glib-2.0’ ‘-I’ ‘/usr/lib/aarch64-linux-gnu/glib-2.0/include’ ‘-I’ ‘./’ ‘-I’ ‘…/’ ‘-I’ ‘/usr/src/jetson_multimedia_api/include/’ ‘-I’ ‘/usr/src/jetson_multimedia_api/argus/samples/utils/’ ‘-o’ ‘gstnvarguscamera_utils.o’ ‘-shared-libgcc’ ‘-mlittle-endian’ ‘-mabi=lp64’
/usr/lib/gcc/aarch64-linux-gnu/7/cc1plus -quiet -v -I /usr/include/gstreamer-1.0 -I /usr/include/orc-0.4 -I /usr/include/gstreamer-1.0 -I /usr/include/glib-2.0 -I /usr/lib/aarch64-linux-gnu/glib-2.0/include -I ./ -I …/ -I /usr/src/jetson_multimedia_api/include/ -I /usr/src/jetson_multimedia_api/argus/samples/utils/ -imultiarch aarch64-linux-gnu -D_GNU_SOURCE -D_REENTRANT gstnvarguscamera_utils.cpp -quiet -dumpbase gstnvarguscamera_utils.cpp -mlittle-endian -mabi=lp64 -auxbase-strip gstnvarguscamera_utils.o -version -fPIC -fstack-protector-strong -Wformat -Wformat-security -o /tmp/ccbrQi9b.s
GNU C++14 (Ubuntu/Linaro 7.5.0-3ubuntu1~18.04) version 7.5.0 (aarch64-linux-gnu)
compiled by GNU C version 7.5.0, GMP version 6.1.2, MPFR version 4.0.1, MPC version 1.1.0, isl version isl-0.19-GMP

GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
ignoring duplicate directory “/usr/include/aarch64-linux-gnu/c++/7”
ignoring nonexistent directory “/usr/local/include/aarch64-linux-gnu”
ignoring nonexistent directory “/usr/local/include”
ignoring nonexistent directory “/usr/lib/gcc/aarch64-linux-gnu/7/…/…/…/…/aarch64-linux-gnu/include”
ignoring duplicate directory “/usr/include/gstreamer-1.0”
#include “…” search starts here:
#include <…> search starts here:
/usr/include/gstreamer-1.0
/usr/include/orc-0.4
/usr/include/glib-2.0
/usr/lib/aarch64-linux-gnu/glib-2.0/include
./
…/
/usr/src/jetson_multimedia_api/include/
/usr/src/jetson_multimedia_api/argus/samples/utils/
/usr/include/c++/7
/usr/include/aarch64-linux-gnu/c++/7
/usr/include/c++/7/backward
/usr/lib/gcc/aarch64-linux-gnu/7/include
/usr/lib/gcc/aarch64-linux-gnu/7/include-fixed
/usr/include/aarch64-linux-gnu
/usr/include
End of search list.
GNU C++14 (Ubuntu/Linaro 7.5.0-3ubuntu1~18.04) version 7.5.0 (aarch64-linux-gnu)
compiled by GNU C version 7.5.0, GMP version 6.1.2, MPFR version 4.0.1, MPC version 1.1.0, isl version isl-0.19-GMP

GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
Compiler executable checksum: 267235b6617dadf512d9def64c54895c
COLLECT_GCC_OPTIONS=‘-v’ ‘-c’ ‘-fPIC’ ‘-pthread’ ‘-I’ ‘/usr/include/gstreamer-1.0’ ‘-I’ ‘/usr/include/orc-0.4’ ‘-I’ ‘/usr/include/gstreamer-1.0’ ‘-I’ ‘/usr/include/glib-2.0’ ‘-I’ ‘/usr/lib/aarch64-linux-gnu/glib-2.0/include’ ‘-I’ ‘./’ ‘-I’ ‘…/’ ‘-I’ ‘/usr/src/jetson_multimedia_api/include/’ ‘-I’ ‘/usr/src/jetson_multimedia_api/argus/samples/utils/’ ‘-o’ ‘gstnvarguscamera_utils.o’ ‘-shared-libgcc’ ‘-mlittle-endian’ ‘-mabi=lp64’
as -v -I /usr/include/gstreamer-1.0 -I /usr/include/orc-0.4 -I /usr/include/gstreamer-1.0 -I /usr/include/glib-2.0 -I /usr/lib/aarch64-linux-gnu/glib-2.0/include -I ./ -I …/ -I /usr/src/jetson_multimedia_api/include/ -I /usr/src/jetson_multimedia_api/argus/samples/utils/ -EL -mabi=lp64 -o gstnvarguscamera_utils.o /tmp/ccbrQi9b.s
GNU assembler version 2.30 (aarch64-linux-gnu) using BFD version (GNU Binutils for Ubuntu) 2.30
COMPILER_PATH=/usr/lib/gcc/aarch64-linux-gnu/7/:/usr/lib/gcc/aarch64-linux-gnu/7/:/usr/lib/gcc/aarch64-linux-gnu/:/usr/lib/gcc/aarch64-linux-gnu/7/:/usr/lib/gcc/aarch64-linux-gnu/
LIBRARY_PATH=/usr/lib/gcc/aarch64-linux-gnu/7/:/usr/lib/gcc/aarch64-linux-gnu/7/…/…/…/aarch64-linux-gnu/:/usr/lib/gcc/aarch64-linux-gnu/7/…/…/…/…/lib/:/lib/aarch64-linux-gnu/:/lib/…/lib/:/usr/lib/aarch64-linux-gnu/:/usr/lib/…/lib/:/usr/lib/gcc/aarch64-linux-gnu/7/…/…/…/:/lib/:/usr/lib/
COLLECT_GCC_OPTIONS=‘-v’ ‘-c’ ‘-fPIC’ ‘-pthread’ ‘-I’ ‘/usr/include/gstreamer-1.0’ ‘-I’ ‘/usr/include/orc-0.4’ ‘-I’ ‘/usr/include/gstreamer-1.0’ ‘-I’ ‘/usr/include/glib-2.0’ ‘-I’ ‘/usr/lib/aarch64-linux-gnu/glib-2.0/include’ ‘-I’ ‘./’ ‘-I’ ‘…/’ ‘-I’ ‘/usr/src/jetson_multimedia_api/include/’ ‘-I’ ‘/usr/src/jetson_multimedia_api/argus/samples/utils/’ ‘-o’ ‘gstnvarguscamera_utils.o’ ‘-shared-libgcc’ ‘-mlittle-endian’ ‘-mabi=lp64’
g++ --verbose -shared -o libgstnvarguscamerasrc.so gstnvarguscamerasrc.o gstnvarguscamera_utils.o -lnvbuf_utils -lnvdsbufferpool -lnvargus_socketclient -lpthread pkg-config --libs gstreamer-1.0 gstreamer-base-1.0 gstreamer-video-1.0 gstreamer-allocators-1.0 glib-2.0 -Wl,–no-undefined -L/usr/lib/aarch64-linux-gnu/tegra/ -Wl,-rpath,/usr/lib/aarch64-linux-gnu/tegra/
Using built-in specs.
COLLECT_GCC=g++
COLLECT_LTO_WRAPPER=/usr/lib/gcc/aarch64-linux-gnu/7/lto-wrapper
Target: aarch64-linux-gnu
Configured with: …/src/configure -v --with-pkgversion=‘Ubuntu/Linaro 7.5.0-3ubuntu1~18.04’ --with-bugurl=file:///usr/share/doc/gcc-7/README.Bugs --enable-languages=c,ada,c++,go,d,fortran,objc,obj-c++ --prefix=/usr --with-gcc-major-version-only --program-suffix=-7 --program-prefix=aarch64-linux-gnu- --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --enable-bootstrap --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-libquadmath --disable-libquadmath-support --enable-plugin --enable-default-pie --with-system-zlib --enable-multiarch --enable-fix-cortex-a53-843419 --disable-werror --enable-checking=release --build=aarch64-linux-gnu --host=aarch64-linux-gnu --target=aarch64-linux-gnu
Thread model: posix
gcc version 7.5.0 (Ubuntu/Linaro 7.5.0-3ubuntu1~18.04)
COMPILER_PATH=/usr/lib/gcc/aarch64-linux-gnu/7/:/usr/lib/gcc/aarch64-linux-gnu/7/:/usr/lib/gcc/aarch64-linux-gnu/:/usr/lib/gcc/aarch64-linux-gnu/7/:/usr/lib/gcc/aarch64-linux-gnu/
LIBRARY_PATH=/usr/lib/gcc/aarch64-linux-gnu/7/:/usr/lib/gcc/aarch64-linux-gnu/7/…/…/…/aarch64-linux-gnu/:/usr/lib/gcc/aarch64-linux-gnu/7/…/…/…/…/lib/:/lib/aarch64-linux-gnu/:/lib/…/lib/:/usr/lib/aarch64-linux-gnu/:/usr/lib/…/lib/:/usr/lib/gcc/aarch64-linux-gnu/7/…/…/…/:/lib/:/usr/lib/
COLLECT_GCC_OPTIONS=‘-v’ ‘-shared’ ‘-o’ ‘libgstnvarguscamerasrc.so’ ‘-L/usr/lib/aarch64-linux-gnu/tegra/’ ‘-shared-libgcc’ ‘-mlittle-endian’ ‘-mabi=lp64’
/usr/lib/gcc/aarch64-linux-gnu/7/collect2 -plugin /usr/lib/gcc/aarch64-linux-gnu/7/liblto_plugin.so -plugin-opt=/usr/lib/gcc/aarch64-linux-gnu/7/lto-wrapper -plugin-opt=-fresolution=/tmp/cc7t8XRC.res -plugin-opt=-pass-through=-lgcc_s -plugin-opt=-pass-through=-lc -plugin-opt=-pass-through=-lgcc_s --build-id --eh-frame-hdr --hash-style=gnu --as-needed -shared -X -EL -maarch64linux --fix-cortex-a53-843419 -z relro -o libgstnvarguscamerasrc.so /usr/lib/gcc/aarch64-linux-gnu/7/…/…/…/aarch64-linux-gnu/crti.o /usr/lib/gcc/aarch64-linux-gnu/7/crtbeginS.o -L/usr/lib/aarch64-linux-gnu/tegra/ -L/usr/lib/gcc/aarch64-linux-gnu/7 -L/usr/lib/gcc/aarch64-linux-gnu/7/…/…/…/aarch64-linux-gnu -L/usr/lib/gcc/aarch64-linux-gnu/7/…/…/…/…/lib -L/lib/aarch64-linux-gnu -L/lib/…/lib -L/usr/lib/aarch64-linux-gnu -L/usr/lib/…/lib -L/usr/lib/gcc/aarch64-linux-gnu/7/…/…/… gstnvarguscamerasrc.o gstnvarguscamera_utils.o -lnvbuf_utils -lnvdsbufferpool -lnvargus_socketclient -lpthread -lgstvideo-1.0 -lgstbase-1.0 -lgstallocators-1.0 -lgstreamer-1.0 -lgobject-2.0 -lglib-2.0 --no-undefined -rpath /usr/lib/aarch64-linux-gnu/tegra/ -lstdc++ -lm -lgcc_s -lc -lgcc_s /usr/lib/gcc/aarch64-linux-gnu/7/crtendS.o /usr/lib/gcc/aarch64-linux-gnu/7/…/…/…/aarch64-linux-gnu/crtn.o
/usr/bin/ld: cannot find -lnvdsbufferpool
collect2: error: ld returned 1 exit status
Makefile:66: recipe for target ‘libgstnvarguscamerasrc.so’ failed
make: *** [libgstnvarguscamerasrc.so] Error 1
tbuckley@tx2-0-desktop:~/tmp/seattle_tx2/gst-nvarguscamera$

It seems to be missing a package for nvdsbufferpool, in the make file there is

PKGS := gstreamer-1.0
gstreamer-base-1.0
gstreamer-video-1.0
gstreamer-allocators-1.0
glib-2.0

No where in the Makefile other than
LIBS:= -lnvbuf_utils -lnvdsbufferpool -lnvargus_socketclient -lpthread
is lnvdsbufferpool defined.

I do see /usr/lib/./aarch64-linux-gnu/tegra/libnvdsbufferpool.so.1.0.0

Terry

No problem. Sorry for the confusion. I thought the headline of this topic matched my topic perfectly. I will create a new topic and try to summarize the issue again and link it back to this topic.

hello terrysu50z,

it’s an issue with libnvdsbufferpool.so symbol link,
could you please have a workaround by changing the libnvdsbufferpool.so.1.0.0 file name to /usr/lib/aarch64-linux-gnu/tegra/libnvdsbufferpool.so.

you should also have a try to remove the gstreamer cache and restart camera stream for verification.
for example, $ rm ${HOME}/.cache/gstreamer-1.0/registry.aarch64.bin
thanks

So I need to link libnvdsbufferpool.so.1.0.0 to libnvdsbufferpool.so

Also needing to install deepstream was not needed correct?

Terry

so nvarguscamerasrc built and after testing I am STILL having problems. Changing TIMEOUT did not help, I changed it from 1 to 5.

What do I try next?

Terry

hello terrysu50z,

may I know what’s the failure. could you please attach errors for reference,
thanks