Open kostastsing opened 4 months ago
Currently working on exactly what you did. Will check your issues
The above errors are also raised when I install and use the plugin natively on AGX Orin Jetpack 6.0 (L4T r36.3.0) with pylon SDK 7.4.0 installed. Thus they do not seem to be related to docker. Also, the version of the plugin that raises the above errors in my setup is 0.7.1-6-gf9dc08c
. I downgraded the plugin version to 0.7.0-12-geffb041
by checking out feature/fix_build_on_pylon7.4.0
branch and the plugin works successfully without errors.
UPDATE
While the plugin works after I downgraded the version to 0.7.0 it does not work when running inside a container using the setup and the Dockerfile I described above. I am getting a segmentation fault. I provide the stacktrace below:
Thread 1 "streamer" received signal SIGSEGV, Segmentation fault.
0x0000ffff7ec9b4ec in gst_pylon_new (gstpylonsrc=gstpylonsrc@entry=0xaaaaab6d9e80, device_user_name=<optimized out>, device_serial_number=<optimized out>, device_index=<optimized out>, enable_correction=<optimized out>, err=err@entry=0xffffffffdee0) at ../ext/pylon/gstpylon.cpp:340
340 ../ext/pylon/gstpylon.cpp: No such file or directory.
(gdb) bt
#0 0x0000ffff7ec9b4ec in gst_pylon_new(_GstElement*, char const*, char const*, int, int, _GError**)
(gstpylonsrc=gstpylonsrc@entry=0xaaaaab6d9e80, device_user_name=<optimized out>, device_serial_number=<optimized out>, device_index=<optimized out>, enable_correction=<optimized out>, err=err@entry=0xffffffffdee0) at ../ext/pylon/gstpylon.cpp:340
#1 0x0000ffff7eca497c in gst_pylon_src_start(GstBaseSrc*) (src=<optimized out>) at ../ext/pylon/gstpylonsrc.cpp:780
#2 0x0000fffff6cd72e0 in () at /lib/aarch64-linux-gnu/libgstbase-1.0.so.0
#3 0x0000fffff6cd8340 in () at /lib/aarch64-linux-gnu/libgstbase-1.0.so.0
#4 0x0000fffff7a3d288 in () at /lib/aarch64-linux-gnu/libgstreamer-1.0.so.0
#5 0x0000fffff7a3dae0 in gst_pad_set_active () at /lib/aarch64-linux-gnu/libgstreamer-1.0.so.0
#6 0x0000fffff7a2166c in () at /lib/aarch64-linux-gnu/libgstreamer-1.0.so.0
#7 0x0000fffff7a2b0f8 in gst_iterator_fold () at /lib/aarch64-linux-gnu/libgstreamer-1.0.so.0
#8 0x0000fffff7a9fb1c in () at /lib/aarch64-linux-gnu/libgstreamer-1.0.so.0
#9 0x0000fffff7a1ed58 in () at /lib/aarch64-linux-gnu/libgstreamer-1.0.so.0
#10 0x0000fffff7a21968 in () at /lib/aarch64-linux-gnu/libgstreamer-1.0.so.0
#11 0x0000fffff6cd84e0 in () at /lib/aarch64-linux-gnu/libgstbase-1.0.so.0
#12 0x0000fffff7a20be8 in gst_element_change_state () at /lib/aarch64-linux-gnu/libgstreamer-1.0.so.0
#13 0x0000fffff7a21374 in () at /lib/aarch64-linux-gnu/libgstreamer-1.0.so.0
#14 0x0000fffff79f678c in () at /lib/aarch64-linux-gnu/libgstreamer-1.0.so.0
#15 0x0000fffff7a20be8 in gst_element_change_state () at /lib/aarch64-linux-gnu/libgstreamer-1.0.so.0
Is the fault raised because it cannot find the source file ../ext/pylon/gstpylon.cpp
? If yes, why the source file is needed since we have built the plugin and using the final executable inside the container?
Also, I keep getting two messages globbing failed
each time I inspect or use the plugin inside the container.
UPDATE
While the plugin works after I downgraded the version to 0.7.0 it does not work when running inside a container using the setup and the Dockerfile I described above. I am getting a segmentation fault. I provide the stacktrace below:
Thread 1 "streamer" received signal SIGSEGV, Segmentation fault. 0x0000ffff7ec9b4ec in gst_pylon_new (gstpylonsrc=gstpylonsrc@entry=0xaaaaab6d9e80, device_user_name=<optimized out>, device_serial_number=<optimized out>, device_index=<optimized out>, enable_correction=<optimized out>, err=err@entry=0xffffffffdee0) at ../ext/pylon/gstpylon.cpp:340 340 ../ext/pylon/gstpylon.cpp: No such file or directory. (gdb) bt #0 0x0000ffff7ec9b4ec in gst_pylon_new(_GstElement*, char const*, char const*, int, int, _GError**) (gstpylonsrc=gstpylonsrc@entry=0xaaaaab6d9e80, device_user_name=<optimized out>, device_serial_number=<optimized out>, device_index=<optimized out>, enable_correction=<optimized out>, err=err@entry=0xffffffffdee0) at ../ext/pylon/gstpylon.cpp:340 #1 0x0000ffff7eca497c in gst_pylon_src_start(GstBaseSrc*) (src=<optimized out>) at ../ext/pylon/gstpylonsrc.cpp:780 #2 0x0000fffff6cd72e0 in () at /lib/aarch64-linux-gnu/libgstbase-1.0.so.0 #3 0x0000fffff6cd8340 in () at /lib/aarch64-linux-gnu/libgstbase-1.0.so.0 #4 0x0000fffff7a3d288 in () at /lib/aarch64-linux-gnu/libgstreamer-1.0.so.0 #5 0x0000fffff7a3dae0 in gst_pad_set_active () at /lib/aarch64-linux-gnu/libgstreamer-1.0.so.0 #6 0x0000fffff7a2166c in () at /lib/aarch64-linux-gnu/libgstreamer-1.0.so.0 #7 0x0000fffff7a2b0f8 in gst_iterator_fold () at /lib/aarch64-linux-gnu/libgstreamer-1.0.so.0 #8 0x0000fffff7a9fb1c in () at /lib/aarch64-linux-gnu/libgstreamer-1.0.so.0 #9 0x0000fffff7a1ed58 in () at /lib/aarch64-linux-gnu/libgstreamer-1.0.so.0 #10 0x0000fffff7a21968 in () at /lib/aarch64-linux-gnu/libgstreamer-1.0.so.0 #11 0x0000fffff6cd84e0 in () at /lib/aarch64-linux-gnu/libgstbase-1.0.so.0 #12 0x0000fffff7a20be8 in gst_element_change_state () at /lib/aarch64-linux-gnu/libgstreamer-1.0.so.0 #13 0x0000fffff7a21374 in () at /lib/aarch64-linux-gnu/libgstreamer-1.0.so.0 #14 0x0000fffff79f678c in () at /lib/aarch64-linux-gnu/libgstreamer-1.0.so.0 #15 0x0000fffff7a20be8 in gst_element_change_state () at /lib/aarch64-linux-gnu/libgstreamer-1.0.so.0
Is the fault raised because it cannot find the source file
../ext/pylon/gstpylon.cpp
? If yes, why the source file is needed since we have built the plugin and using the final executable inside the container?Also, I keep getting two messages
globbing failed
each time I inspect or use the plugin inside the container.
I managed to solve the above issue by copying all the contents of /opt/pylon/lib
from the host into the container. I came up with this solution after checking with lsof
what files are opened when I run the command gst-inspect-1.0 pylonsrc
. I can mark this issue as closed, but the other issue about using the latest plugin with version 0.7.1-6-gf9dc08c
and pylon 7.4.0 still remains unresolved.
Hi @kostastsing,
we now have binary debian packages for multiple debian and ubuntu versions:
https://github.com/basler/gst-plugin-pylon/releases/tag/v0.7.3
and an explanation to build the plugin debian packages for NVIDIA deepstream including nvmm support:
https://github.com/basler/gst-plugin-pylon?tab=readme-ov-file#debian-nvidia-packaging
I have built the
gst-plugin-pylon
insidedeepstream-l4t:6.4-triton-multiarch
in a x86_64 workstation using qemu machine emulator. As the plugin depends onlibnvbufsurface.so
library for enabling NVMM feature, I download the L4T BSP inside the container, extract it and copy the corresponding library in/opt/nvidia/deepstream/deepstream/lib
. I provide the code snippet in the dockerfile below:Also, I have previously installed the pylon SDK for arm64 in the container in
/opt/pylon
. The plugin is then built successfully with NVMM support inside the container as you can see below:As, I want to deploy my application to a Jetson device, I build a docker image based on
deepstream-l4t:6.4-samples-multiarch
that contains only the runtime libraries of deepstream. I copy the plugin librarylibgstpylon.so
and all the shared libraries it depends on at runtime into the container from the image I built previously (base). I provide the corresponding dockerfile code snippet below:When, I run the final production image on Jetson device I am taking the below errors:
The plugin is successfully loaded and inspected inside the container, but there are two messages
globbing failed
printed:Regarding the hardware setup, I use two basler GigE cameras each connected to a different network port in a basler GigE interface card that is connected on a Jetson AGX Orin via the PCIe bus.
I have also installed the pylon SDK on Jetson (out of the container) and I have verified that the cameras operate successfully. In addition, to verify that the cameras can be accessed from inside the container I have installed
pypylon
and I have run thestartup.py
sample successfully.Has anyone with a similar setup experienced this problem? Can anyone give a direction in resolving this issue?