Segmentation fault in /usr/lib/aarch64-linux-gnu/tegra/libGLX.so.0

When pre-loading libNvidia_gfx_debugger.so in order to run the tegra graphics debugger a segmentation fault occurs in libGLX.so.

This can be observed when running the qmlsink example under gst-plugins-good in gstreamer.

nvidia@baba:~/dev/gst-build-all/gst-plugins-good/tests/examples/qt/qmlsink$ LD_PRELOAD=~/.tgd/libs/libNvidia_gfx_debugger.so gdb --args ./play
GNU gdb (Ubuntu 7.11.1-0ubuntu1~16.5) 7.11.1
Copyright (C) 2016 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "aarch64-linux-gnu"
....
Reading symbols from ./play...done.
(gdb) run
Starting program: /home/nvidia/dev/gst-build-all/gst-plugins-good/tests/examples/qt/qmlsink/play 
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/aarch64-linux-gnu/libthread_db.so.1".
[New Thread 0x7fb1d3c1c0 (LWP 15380)]
[New Thread 0x7fabe401c0 (LWP 15381)]
TGD: Starting GTI initialization...
TGD: GLX vendor: NVIDIA Corporation

Thread 1 "play" received signal SIGSEGV, Segmentation fault.
0x0000007fb4073fe0 in ?? () from /usr/lib/aarch64-linux-gnu/tegra/libGLX.so.0
(gdb) br
Breakpoint 1 at 0x7fb4073fe0
(gdb) bt
#0  0x0000007fb4073fe0 in ?? () from /usr/lib/aarch64-linux-gnu/tegra/libGLX.so.0
#1  0x0000007fb5ef7000 in ?? () from /usr/lib/aarch64-linux-gnu/libQt5Quick.so.5
Backtrace stopped: previous frame inner to this frame (corrupt stack?)
(gdb)

This bug is not observable when not preloading the GFX debugger LIB.

EDIT: L4T version 28.2

There are actually two locations where libglx.so exists. Sometimes package updates can break one. Do you see all is “ok” and correctly in place from:

sha1sum -c /etc/nv_tegra_release

Also, I have no idea of what the origins are of your:

~/.tgd/libs/libNvidia_gfx_debugger.so

Can you give more information on where this is from (I’m mostly curious as to whether this may have been designed for a PCIe video card or one integrated with the memory controller)?

What does this library want to link against?

sudo ldd ~/.tgd/libs/libNvidia_gfx_debugger.so

Sure:

nvidia@baba:~$ sha1sum -c /etc/nv_tegra_release
/usr/lib/xorg/modules/extensions/libglx.so: OK
/usr/lib/xorg/modules/drivers/nvidia_drv.so: OK
/usr/lib/aarch64-linux-gnu/tegra/libtegrav4l2.so: OK
/usr/lib/aarch64-linux-gnu/tegra/libnvrm.so: OK
/usr/lib/aarch64-linux-gnu/tegra/libargus_socketserver.so: OK
/usr/lib/aarch64-linux-gnu/tegra/libnvjpeg.so: OK
/usr/lib/aarch64-linux-gnu/tegra/libnvomxilclient.so: OK
/usr/lib/aarch64-linux-gnu/tegra/libnvidia-egl-wayland.so: OK
/usr/lib/aarch64-linux-gnu/tegra/libnvcamerautils.so: OK
/usr/lib/aarch64-linux-gnu/tegra/libnvrm_graphics.so: OK
/usr/lib/aarch64-linux-gnu/tegra/libnvosd.so: OK
/usr/lib/aarch64-linux-gnu/tegra/libnvddk_2d_v2.so: OK
/usr/lib/aarch64-linux-gnu/tegra/libargus_socketclient.so: OK
/usr/lib/aarch64-linux-gnu/tegra/libargus.so: OK
/usr/lib/aarch64-linux-gnu/tegra/libnvtestresults.so: OK
/usr/lib/aarch64-linux-gnu/tegra/libnvddk_vic.so: OK
/usr/lib/aarch64-linux-gnu/tegra/libnvcamlog.so: OK
/usr/lib/aarch64-linux-gnu/tegra/libnvparser.so: OK
/usr/lib/aarch64-linux-gnu/tegra/libnvmmlite_image.so: OK
/usr/lib/aarch64-linux-gnu/tegra/libnvrm_gpu.so: OK
/usr/lib/aarch64-linux-gnu/tegra/libnvmm_parser.so: OK
/usr/lib/aarch64-linux-gnu/tegra/libnvmmlite_utils.so: OK
/usr/lib/aarch64-linux-gnu/tegra/libnvmmlite.so: OK
/usr/lib/aarch64-linux-gnu/tegra/libnvcameratools.so: OK
/usr/lib/aarch64-linux-gnu/tegra/libnvimp.so: OK
/usr/lib/aarch64-linux-gnu/tegra/libnvfnet.so: OK
/usr/lib/aarch64-linux-gnu/tegra/libscf.so: OK
/usr/lib/aarch64-linux-gnu/tegra/libglx.so: OK
/usr/lib/aarch64-linux-gnu/tegra/libnvomx.so: OK
/usr/lib/aarch64-linux-gnu/tegra/libnvmm_contentpipe.so: OK
/usr/lib/aarch64-linux-gnu/tegra/libnvtnr.so: OK
/usr/lib/aarch64-linux-gnu/tegra/libnvfnetstorehdfx.so: OK
/usr/lib/aarch64-linux-gnu/tegra/libnvtvmr.so: OK
/usr/lib/aarch64-linux-gnu/tegra/libnveglstream_camconsumer.so: OK
/usr/lib/aarch64-linux-gnu/tegra/libnvfnetstoredefog.so: OK
/usr/lib/aarch64-linux-gnu/tegra/libnvmmlite_video.so: OK
/usr/lib/aarch64-linux-gnu/tegra/libnvavp.so: OK
/usr/lib/aarch64-linux-gnu/tegra/libnvll.so: OK
/usr/lib/aarch64-linux-gnu/tegra/libnvdc.so: OK
/usr/lib/aarch64-linux-gnu/tegra/libnvcolorutil.so: OK
/usr/lib/aarch64-linux-gnu/tegra/libnvapputil.so: OK
/usr/lib/aarch64-linux-gnu/tegra/libnvmm.so: OK
/usr/lib/aarch64-linux-gnu/tegra/libnvos.so: OK
/usr/lib/aarch64-linux-gnu/tegra/libnvmedia.so: OK
/usr/lib/aarch64-linux-gnu/tegra/libnvodm_imager.so: OK
/usr/lib/aarch64-linux-gnu/tegra/libnvcam_imageencoder.so: OK
/usr/lib/aarch64-linux-gnu/tegra/libnvwinsys.so: OK
/usr/lib/aarch64-linux-gnu/tegra/libnveglstreamproducer.so: OK
/usr/lib/aarch64-linux-gnu/tegra/libnvexif.so: OK
/usr/lib/aarch64-linux-gnu/tegra/libnvmm_utils.so: OK
/usr/lib/aarch64-linux-gnu/tegra/libnvtx_helper.so: OK
/usr/lib/aarch64-linux-gnu/libv4l/plugins/libv4l2_nvvideocodec.so: OK
/usr/lib/aarch64-linux-gnu/libv4l/plugins/libv4l2_nvvidconv.so: OK
nvidia@baba:~$ sudo ldd ~/.tgd/libs/libNvidia_gfx_debugger.so
	linux-vdso.so.1 =>  (0x0000007f7f438000)
	libpthread.so.0 => /lib/aarch64-linux-gnu/libpthread.so.0 (0x0000007f7d5c9000)
	libdl.so.2 => /lib/aarch64-linux-gnu/libdl.so.2 (0x0000007f7d5b6000)
	libX11.so.6 => /usr/lib/aarch64-linux-gnu/libX11.so.6 (0x0000007f7d48e000)
	libm.so.6 => /lib/aarch64-linux-gnu/libm.so.6 (0x0000007f7d3e0000)
	libc.so.6 => /lib/aarch64-linux-gnu/libc.so.6 (0x0000007f7d299000)
	/lib/ld-linux-aarch64.so.1 (0x000000558c589000)
	libxcb.so.1 => /usr/lib/aarch64-linux-gnu/libxcb.so.1 (0x0000007f7d26e000)
	libXau.so.6 => /usr/lib/aarch64-linux-gnu/libXau.so.6 (0x0000007f7d25a000)
	libXdmcp.so.6 => /usr/lib/aarch64-linux-gnu/libXdmcp.so.6 (0x0000007f7d245000)
nvidia@baba:~$

The origins of the .so are from the nvidia tegra graphics debugger that is installed with std JetPack.

All of the correct drivers for this L4T are in place, so it isn’t a case of mismatched libglx.so versions.

I don’t see any unmet dependencies for libNvidia_gfx_debugger.so (so far as libraries it is looking for…it doesn’t say anything about the library dependencies of the other libraries…but presumably those were installed correctly or there’d be a lot more going wrong).

Are you running this natively on the Jetson? Is there already a server running on DISPLAY “:0”? If so, are you starting a new instance after setting “export DISPLAY=:1”? I have to admit I have not set up this tool before, but it seems the libraries and other files are in place, that it is more like an environment issue.