Package: libxext6
Version: 2:1.3.3-1.1
Severity: minor
Tags: upstream
X-Debbugs-Cc: s...@debian.org

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

Hi,

I have a very basic Vulkan app that uses libXext only indirectly through
the Vulkan X11 extension, so my program is not linked against libXext
directly (and can be linked only with --no-as-needed).

During shutdown, the program crashes with a segmentation fault, during

63                  for (ext = dpy->ext_procs; ext; ext = ext->next) {
64                      if (ext->close_display)
65                          (*ext->close_display)(dpy, &ext->codes);

from src/ClDisplay.c in libX11. According to gdb,

*ext = {next = 0x5555558d0ee0, codes = {extension = 2, major_opcode = 128,
    first_event = 0, first_error = 0}, create_GC = 0x0, copy_GC = 0x0,
  flush_GC = 0x0, free_GC = 0x0, create_Font = 0x0, free_Font = 0x0,
  close_display = 0x7fffed9c6ce0, error = 0x0, error_string = 0x0,
  name = 0x5555558d0ec0 "Generic Event Extension", error_values = 0x0,
  before_flush = 0x0, next_flush = 0x0}

The address for close_display refers to

0x00007fffed9bd3d0  0x00007fffed9c74ff  Yes (*)     
/lib/x86_64-linux-gnu/libXext.so.6

which has been unloaded at this point, together with the Vulkan driver.

It seems that libXext expects that it will remain loaded until
CloseDisplay() time, which is difficult to do here: I need to dismantle
Vulkan before closing the display connection, and libXext is only used
by an extension module that is loaded with dlopen(), so libXext will be
unloaded during Vulkan stack teardown.

I could reproduce this with both Intel and nVidia GPUs, using the source
attached. The problem goes away if I configure with

./configure LIBS='-Wl,--no-as-needed,-lXext'

to force link the application against libXext.

   Simon

- -- System Information:
Debian Release: 11.2
  APT prefers stable
  APT policy: (990, 'stable'), (500, 'stable-updates'), (500, 
'stable-security'), (500, 'stable-debug'), (500, 'proposed-updates-debug'), 
(500, 'unstable')
Architecture: amd64 (x86_64)
Foreign Architectures: i386

Kernel: Linux 5.10.0-9-amd64 (SMP w/8 CPU threads)
Kernel taint flags: TAINT_PROPRIETARY_MODULE, TAINT_OOT_MODULE
Locale: LANG=C.UTF-8, LC_CTYPE=C.UTF-8 (charmap=UTF-8), LANGUAGE not set
Shell: /bin/sh linked to /usr/bin/dash
Init: sysvinit (via /sbin/init)
LSM: AppArmor: enabled

Versions of packages libxext6 depends on:
ii  libc6     2.31-13+deb11u2
ii  libx11-6  2:1.7.2-1

libxext6 recommends no packages.

libxext6 suggests no packages.

- -- no debconf information

-----BEGIN PGP SIGNATURE-----

iQFDBAEBCgAtFiEEtjuqOJSXmNjSiX3Tfr04e7CZCBEFAmHRPB4PHHNqckBkZWJp
YW4ub3JnAAoJEH69OHuwmQgRhVcH/395wMUzc6/q2MPTES2qNGiLqdbvy2prlgLy
MFRhvuhNGYFIxOhjaDPP9XKpjQ7FnZo54mVNq9FhSipbzCkTscj27s8bOVkcQ3Sz
wIi2NRkNuUOsrHdylxnqH9+tDOd4LhcpWONf3ch65a4siXrw6VjQ4+tdgayBdVgD
DzF0Ax2aXUyO/cAiUCoq4rbd1gaXkiAPSL6sprzklpf2H/Jqj475fr0cxAEJh/Mc
QvtV1hh26Cl1AIIkAM8EcD49fHCWXxIWscZDv5Ubw9ROCs1fUbLdMwczzeC4H8im
pFpf3TphQyB3LaZ6qSqDR3kQOv3jGcHhCPYFoc7U6dCpTmblz8Q=
=SA2i
-----END PGP SIGNATURE-----

Attachment: vkload-0.0.20211229.tar.gz
Description: application/gzip

Reply via email to