yshui / picom-xrdesktop-companion

picom's companion program to bring your desktop to XR
22 stars 4 forks source link

Can't build after xrdesktop, gulkan, gxr update to 0.16 on AUR #7

Open duckbytes opened 1 year ago

duckbytes commented 1 year ago

xrdesktop-git, gxr-git and gulkan-git were all updated to 0.16 recently on the AUR.

The build binary I was using failed because it couldn't find a .so file on my system any more (think it was libxrdesktop-0.16.so, but I deleted the binary so I can't check again).

Trying to compile with cargo build --release gives this output:

    Skipping git submodule `https://github.com/gtk-rs/gir` due to update strategy in .gitmodules
    Skipping git submodule `https://github.com/gtk-rs/gir-files` due to update strategy in .gitmodules
    Skipping git submodule `https://github.com/gtk-rs/gir` due to update strategy in .gitmodules
    Skipping git submodule `https://github.com/gtk-rs/gir-files` due to update strategy in .gitmodules
   Compiling picom-xrdesktop-companion v0.1.0 (/home/theo/git/picom-xrdesktop-companion/app)
   Compiling gxr-sys v0.15.0 (/home/theo/git/picom-xrdesktop-companion/gxr/sys)
   Compiling gulkan-sys v0.15.0 (/home/theo/git/picom-xrdesktop-companion/gulkan/sys)
   Compiling xrd-sys v0.15.0 (/home/theo/git/picom-xrdesktop-companion/xrd/sys)
   Compiling gobject-sys v0.17.0 (https://github.com/gtk-rs/gtk-rs-core#8f989cc2)
   Compiling cairo-sys-rs v0.17.0 (https://github.com/gtk-rs/gtk-rs-core#8f989cc2)
   Compiling graphene-sys v0.17.0 (https://github.com/gtk-rs/gtk-rs-core#8f989cc2)
The following warnings were emitted during compilation:

warning: `"pkg-config" "--libs" "--cflags" "gulkan-0.15" "gulkan-0.15 >= 0.15"` did not exit successfully: exit status: 1

error: failed to run custom build command for `gulkan-sys v0.15.0 (/home/theo/git/picom-xrdesktop-companion/gulkan/sys)`

Caused by:
  process didn't exit successfully: `/home/theo/git/picom-xrdesktop-companion/target/release/build/gulkan-sys-76430b28aad475cc/build-script-build` (exit status: 1)
  --- stdout
  cargo:rerun-if-env-changed=GULKAN_0.15_NO_PKG_CONFIG
  cargo:rerun-if-env-changed=PKG_CONFIG_x86_64-unknown-linux-gnu
  cargo:rerun-if-env-changed=PKG_CONFIG_x86_64_unknown_linux_gnu
  cargo:rerun-if-env-changed=HOST_PKG_CONFIG
  cargo:rerun-if-env-changed=PKG_CONFIG
  cargo:rerun-if-env-changed=PKG_CONFIG_PATH_x86_64-unknown-linux-gnu
  cargo:rerun-if-env-changed=PKG_CONFIG_PATH_x86_64_unknown_linux_gnu
  cargo:rerun-if-env-changed=HOST_PKG_CONFIG_PATH
  cargo:rerun-if-env-changed=PKG_CONFIG_PATH
  cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR_x86_64-unknown-linux-gnu
  cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR_x86_64_unknown_linux_gnu
  cargo:rerun-if-env-changed=HOST_PKG_CONFIG_LIBDIR
  cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR
  cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR_x86_64-unknown-linux-gnu
  cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR_x86_64_unknown_linux_gnu
  cargo:rerun-if-env-changed=HOST_PKG_CONFIG_SYSROOT_DIR
  cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR
  cargo:warning=`"pkg-config" "--libs" "--cflags" "gulkan-0.15" "gulkan-0.15 >= 0.15"` did not exit successfully: exit status: 1
  error: could not find system library 'gulkan-0.15' required by the 'gulkan-sys' crate

  --- stderr
  Package gulkan-0.15 was not found in the pkg-config search path.
  Perhaps you should add the directory containing `gulkan-0.15.pc'
  to the PKG_CONFIG_PATH environment variable
  Package 'gulkan-0.15', required by 'virtual:world', not found
  Package 'gulkan-0.15', required by 'virtual:world', not found

warning: build failed, waiting for other jobs to finish...
The following warnings were emitted during compilation:

warning: `"pkg-config" "--libs" "--cflags" "gxr-0.15" "gxr-0.15 >= 0.15"` did not exit successfully: exit status: 1

error: failed to run custom build command for `gxr-sys v0.15.0 (/home/theo/git/picom-xrdesktop-companion/gxr/sys)`

Caused by:
  process didn't exit successfully: `/home/theo/git/picom-xrdesktop-companion/target/release/build/gxr-sys-febd531d06147524/build-script-build` (exit status: 1)
  --- stdout
  cargo:rerun-if-env-changed=GXR_0.15_NO_PKG_CONFIG
  cargo:rerun-if-env-changed=PKG_CONFIG_x86_64-unknown-linux-gnu
  cargo:rerun-if-env-changed=PKG_CONFIG_x86_64_unknown_linux_gnu
  cargo:rerun-if-env-changed=HOST_PKG_CONFIG
  cargo:rerun-if-env-changed=PKG_CONFIG
  cargo:rerun-if-env-changed=PKG_CONFIG_PATH_x86_64-unknown-linux-gnu
  cargo:rerun-if-env-changed=PKG_CONFIG_PATH_x86_64_unknown_linux_gnu
  cargo:rerun-if-env-changed=HOST_PKG_CONFIG_PATH
  cargo:rerun-if-env-changed=PKG_CONFIG_PATH
  cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR_x86_64-unknown-linux-gnu
  cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR_x86_64_unknown_linux_gnu
  cargo:rerun-if-env-changed=HOST_PKG_CONFIG_LIBDIR
  cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR
  cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR_x86_64-unknown-linux-gnu
  cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR_x86_64_unknown_linux_gnu
  cargo:rerun-if-env-changed=HOST_PKG_CONFIG_SYSROOT_DIR
  cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR
  cargo:warning=`"pkg-config" "--libs" "--cflags" "gxr-0.15" "gxr-0.15 >= 0.15"` did not exit successfully: exit status: 1
  error: could not find system library 'gxr-0.15' required by the 'gxr-sys' crate

  --- stderr
  Package gxr-0.15 was not found in the pkg-config search path.
  Perhaps you should add the directory containing `gxr-0.15.pc'
  to the PKG_CONFIG_PATH environment variable
  Package 'gxr-0.15', required by 'virtual:world', not found
  Package 'gxr-0.15', required by 'virtual:world', not found

The following warnings were emitted during compilation:

warning: `"pkg-config" "--libs" "--cflags" "xrdesktop-0.15" "xrdesktop-0.15 >= 0.15"` did not exit successfully: exit status: 1

error: failed to run custom build command for `xrd-sys v0.15.0 (/home/theo/git/picom-xrdesktop-companion/xrd/sys)`

Caused by:
  process didn't exit successfully: `/home/theo/git/picom-xrdesktop-companion/target/release/build/xrd-sys-eef7c4941780ecae/build-script-build` (exit status: 1)
  --- stdout
  cargo:rerun-if-env-changed=XRDESKTOP_0.15_NO_PKG_CONFIG
  cargo:rerun-if-env-changed=PKG_CONFIG_x86_64-unknown-linux-gnu
  cargo:rerun-if-env-changed=PKG_CONFIG_x86_64_unknown_linux_gnu
  cargo:rerun-if-env-changed=HOST_PKG_CONFIG
  cargo:rerun-if-env-changed=PKG_CONFIG
  cargo:rerun-if-env-changed=PKG_CONFIG_PATH_x86_64-unknown-linux-gnu
  cargo:rerun-if-env-changed=PKG_CONFIG_PATH_x86_64_unknown_linux_gnu
  cargo:rerun-if-env-changed=HOST_PKG_CONFIG_PATH
  cargo:rerun-if-env-changed=PKG_CONFIG_PATH
  cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR_x86_64-unknown-linux-gnu
  cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR_x86_64_unknown_linux_gnu
  cargo:rerun-if-env-changed=HOST_PKG_CONFIG_LIBDIR
  cargo:rerun-if-env-changed=PKG_CONFIG_LIBDIR
  cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR_x86_64-unknown-linux-gnu
  cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR_x86_64_unknown_linux_gnu
  cargo:rerun-if-env-changed=HOST_PKG_CONFIG_SYSROOT_DIR
  cargo:rerun-if-env-changed=PKG_CONFIG_SYSROOT_DIR
  cargo:warning=`"pkg-config" "--libs" "--cflags" "xrdesktop-0.15" "xrdesktop-0.15 >= 0.15"` did not exit successfully: exit status: 1
  error: could not find system library 'xrdesktop-0.15' required by the 'xrd-sys' crate

  --- stderr
  Package xrdesktop-0.15 was not found in the pkg-config search path.
  Perhaps you should add the directory containing `xrdesktop-0.15.pc'
  to the PKG_CONFIG_PATH environment variable
  Package 'xrdesktop-0.15', required by 'virtual:world', not found
  Package 'xrdesktop-0.15', required by 'virtual:world', not found

Not sure if there is a workaround to build the app against the new versions.

yshui commented 1 year ago

0.16 is said to have a significant API change (I haven't checked if it's actually the case yet), so it would take some time before I can update the code base to the new API.

For the time being I recommend downgrading to 0.15.

duckbytes commented 1 year ago

That makes sense. Thanks for the response.

duckbytes commented 1 year ago

I've been able to downgrade back to 0.15.1, but now I'm getting a segmentation fault:

➜  picom-xrdesktop-companion git:(next) pacman -Qs gxr
local/gxr-git 0.15.1.983.27da712-1
    A glib wrapper for the OpenVR and OpenXR APIs.
local/jxrlib 0.2.4-1
    Open source implementation of jpegxr
➜  picom-xrdesktop-companion git:(next) pacman -Qs xrdesktop
local/gnome-shell-extension-xrdesktop-git 0.16.0.37.6124c8c-1
    An extension for toggling xrdesktop mode in GNOME Shell.
local/xrdesktop-git 0.15.1.864.fda9b23-1
    A library for XR interaction with classical desktop compositors.
➜  picom-xrdesktop-companion git:(next) pacman -Qs gulkan
local/gulkan-git 0.15.1.300.f39526a-1
    A GLib library for Vulkan abstraction.
➜  picom-xrdesktop-companion git:(next) target/release/picom-xrdesktop-companion
ClientMode::Overlay
Load manifest path /home/theo/.cache/xrdesktop.openvr/actions.json
[1]    218538 segmentation fault (core dumped)  target/release/picom-xrdesktop-companion
➜  picom-xrdesktop-companion git:(next)

Any thoughts about what might be going wrong?

yshui commented 1 year ago

is there a stack trace?

duckbytes commented 1 year ago

picomxrdesktopstrace.zip

Attached is the full strace output, but here are the last few lines copied too:

poll([{fd=47, events=POLLIN}], 1, -1)   = 1 ([{fd=47, revents=POLLIN}])
recvmsg(47, {msg_name=NULL, msg_namelen=0, msg_iov=[{iov_base="\1\0\7\0\0\0\0\0D\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", iov_len=4096}], msg_iovlen=1, msg_controllen=0, msg_flags=MSG_CMSG_CLOEXEC}, MSG_CMSG_CLOEXEC) = 32
recvmsg(47, {msg_namelen=0}, MSG_CMSG_CLOEXEC) = -1 EAGAIN (Resource temporarily unavailable)
futex(0x56153730c5c8, FUTEX_WAKE_PRIVATE, 2147483647) = 0
mmap(NULL, 2101248, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7fdc341ff000
mprotect(0x7fdc34200000, 2097152, PROT_READ|PROT_WRITE) = 0
rt_sigprocmask(SIG_BLOCK, ~[], [], 8)   = 0
clone3({flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, child_tid=0x7fdc343ff990, parent_tid=0x7fdc343ff990, exit_signal=0, stack=0x7fdc341ff000, stack_size=0x1ffc40, tls=0x7fdc343ff6c0} => {parent_tid=[314154]}, 88) = 314154
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
futex(0x561536e515a0, FUTEX_WAIT_BITSET_PRIVATE, 1, NULL, FUTEX_BITSET_MATCH_ANY) = 0
mmap(NULL, 2101248, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7fdc0ebfd000
mprotect(0x7fdc0ebfe000, 2097152, PROT_READ|PROT_WRITE) = 0
rt_sigprocmask(SIG_BLOCK, ~[], [], 8)   = 0
clone3({flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, child_tid=0x7fdc0edfd990, parent_tid=0x7fdc0edfd990, exit_signal=0, stack=0x7fdc0ebfd000, stack_size=0x1ffc40, tls=0x7fdc0edfd6c0} => {parent_tid=[314161]}, 88) = 314161
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
sendmsg(3, {msg_name=NULL, msg_namelen=0, msg_iov=[{iov_base="l\1\0\1\0\0\0\0\2\0\0\0\254\0\0\0\1\1o\0 \0\0\0/com/git"..., iov_len=192}], msg_iovlen=1, msg_controllen=0, msg_flags=0}, 0) = 192
futex(0x561536e515a0, FUTEX_WAIT_BITSET_PRIVATE, 2, NULL, FUTEX_BITSET_MATCH_ANY) = 0
futex(0x561536e514d8, FUTEX_WAKE_PRIVATE, 1) = 1
futex(0x561536e515a0, FUTEX_WAIT_BITSET_PRIVATE, 3, NULL, FUTEX_BITSET_MATCH_ANY) = 0
futex(0x7fdc5d496ba0, FUTEX_WAKE_PRIVATE, 1) = 0
futex(0x561536e515a0, FUTEX_WAIT_BITSET_PRIVATE, 4, NULL, FUTEX_BITSET_MATCH_ANY) = -1 EAGAIN (Resource temporarily unavailable)
futex(0x561536e515a0, FUTEX_WAIT_BITSET_PRIVATE, 5, NULL, FUTEX_BITSET_MATCH_ANY) = 0
futex(0x561536e515a0, FUTEX_WAIT_BITSET_PRIVATE, 6, NULL, FUTEX_BITSET_MATCH_ANY) = -1 EAGAIN (Resource temporarily unavailable)
futex(0x561536e515a0, FUTEX_WAIT_BITSET_PRIVATE, 7, NULL, FUTEX_BITSET_MATCH_ANY) = -1 EAGAIN (Resource temporarily unavailable)
futex(0x561536e515a0, FUTEX_WAIT_BITSET_PRIVATE, 8, NULL, FUTEX_BITSET_MATCH_ANY) = 0
futex(0x561536e515a0, FUTEX_WAIT_BITSET_PRIVATE, 9, NULL, FUTEX_BITSET_MATCH_ANY) = -1 EAGAIN (Resource temporarily unavailable)
futex(0x561536e515a0, FUTEX_WAIT_BITSET_PRIVATE, 10, NULL, FUTEX_BITSET_MATCH_ANY) = 0
futex(0x561536e515a0, FUTEX_WAIT_BITSET_PRIVATE, 11, NULL, FUTEX_BITSET_MATCH_ANY) = 0
futex(0x561536e515a0, FUTEX_WAIT_BITSET_PRIVATE, 12, NULL, FUTEX_BITSET_MATCH_ANY) = 0
futex(0x561536e515a0, FUTEX_WAIT_BITSET_PRIVATE, 13, NULL, FUTEX_BITSET_MATCH_ANY) = 0
futex(0x561536e515a0, FUTEX_WAIT_BITSET_PRIVATE, 14, NULL, FUTEX_BITSET_MATCH_ANY) = 0
futex(0x561536e515a0, FUTEX_WAIT_BITSET_PRIVATE, 15, NULL, FUTEX_BITSET_MATCH_ANY) = 0
futex(0x561536e515a0, FUTEX_WAIT_BITSET_PRIVATE, 16, NULL, FUTEX_BITSET_MATCH_ANY) = -1 EAGAIN (Resource temporarily unavailable)
futex(0x561536e515a0, FUTEX_WAIT_BITSET_PRIVATE, 17, NULL, FUTEX_BITSET_MATCH_ANY) = 0
futex(0x561536e515a0, FUTEX_WAIT_BITSET_PRIVATE, 18, NULL, FUTEX_BITSET_MATCH_ANY) = -1 EAGAIN (Resource temporarily unavailable)
futex(0x561536e515a0, FUTEX_WAIT_BITSET_PRIVATE, 19, NULL, FUTEX_BITSET_MATCH_ANY) = 0
futex(0x561536e515a0, FUTEX_WAIT_BITSET_PRIVATE, 20, NULL, FUTEX_BITSET_MATCH_ANY) = -1 EAGAIN (Resource temporarily unavailable)
futex(0x561536e515a0, FUTEX_WAIT_BITSET_PRIVATE, 21, NULL, FUTEX_BITSET_MATCH_ANY) = -1 EAGAIN (Resource temporarily unavailable)
futex(0x561536e515a0, FUTEX_WAIT_BITSET_PRIVATE, 22, NULL, FUTEX_BITSET_MATCH_ANY) = -1 EAGAIN (Resource temporarily unavailable)
futex(0x561536e515a0, FUTEX_WAIT_BITSET_PRIVATE, 23, NULL, FUTEX_BITSET_MATCH_ANY) = 0
futex(0x561536e515a0, FUTEX_WAIT_BITSET_PRIVATE, 24, NULL, FUTEX_BITSET_MATCH_ANY) = -1 EAGAIN (Resource temporarily unavailable)
futex(0x561536e515a0, FUTEX_WAIT_BITSET_PRIVATE, 25, NULL, FUTEX_BITSET_MATCH_ANY) = -1 EAGAIN (Resource temporarily unavailable)
futex(0x7fdc5d496ba0, FUTEX_WAKE_PRIVATE, 1) = 0
futex(0x7fdc5d496ba0, FUTEX_WAIT_PRIVATE, 2, NULL) = -1 EAGAIN (Resource temporarily unavailable)
futex(0x7fdc5d496ba0, FUTEX_WAKE_PRIVATE, 1) = 0
futex(0x561536e515a0, FUTEX_WAIT_BITSET_PRIVATE, 26, NULL, FUTEX_BITSET_MATCH_ANY) = 0
futex(0x561536e515a0, FUTEX_WAIT_BITSET_PRIVATE, 27, NULL, FUTEX_BITSET_MATCH_ANY) = 0
futex(0x561536e515a0, FUTEX_WAIT_BITSET_PRIVATE, 28, NULL, FUTEX_BITSET_MATCH_ANY) = ?
+++ killed by SIGSEGV (core dumped) +++
yshui commented 1 year ago

@duckbytes thanks, but i was asking for a stack trace :sweat_smile:

duckbytes commented 1 year ago

How can I get that for you?

yshui commented 1 year ago

run the program under gdb, use the backtrace command when it crashes.

duckbytes commented 1 year ago

Thanks. Here's the output:

Thread 13 "picom-xrdesktop" received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7fffc31fe6c0 (LWP 48479)]
0x00007fffc18b093c in ?? () from /usr/lib/dri/radeonsi_dri.so
(gdb) backtrace
#0  0x00007fffc18b093c in  () at /usr/lib/dri/radeonsi_dri.so
#1  0x00007fffc1161e5e in  () at /usr/lib/dri/radeonsi_dri.so
#2  0x00007fffc114742d in  () at /usr/lib/dri/radeonsi_dri.so
#3  0x00007fffc13cf1d9 in  () at /usr/lib/dri/radeonsi_dri.so
#4  0x00007fffc13cf96e in  () at /usr/lib/dri/radeonsi_dri.so
#5  0x00007fffc13b742a in  () at /usr/lib/dri/radeonsi_dri.so
#6  0x00007fffc12d9148 in  () at /usr/lib/dri/radeonsi_dri.so
#7  0x00007fffc12d952d in  () at /usr/lib/dri/radeonsi_dri.so
#8  0x00007fffc1383158 in  () at /usr/lib/dri/radeonsi_dri.so
#9  0x00005555556fec78 in glium::buffer::alloc::Alloc::new ()
#10 0x000055555573bf11 in picom_xrdesktop_companion::gl::GlInner::blit ()
#11 0x0000555555761735 in core::ops::function::FnOnce::call_once{{vtable.shim}} ()
#12 0x0000555555788d44 in picom_xrdesktop_companion::utils::RemoteInner<T>::run ()
#13 0x00005555556ecfc4 in std::sys_common::backtrace::__rust_begin_short_backtrace ()
#14 0x00005555556fb119 in core::ops::function::FnOnce::call_once{{vtable.shim}} ()
#15 0x00005555558847a5 in alloc::boxed::{impl#44}::call_once<(), dyn core::ops::function::FnOnce<(), Output=()>, alloc::alloc::Global> () at library/alloc/src/boxed.rs:1951
#16 alloc::boxed::{impl#44}::call_once<(), alloc::boxed::Box<dyn core::ops::function::FnOnce<(), Output=()>, alloc::alloc::Global>, alloc::alloc::Global> ()
    at library/alloc/src/boxed.rs:1951
#17 std::sys::unix::thread::{impl#2}::new::thread_start ()
    at library/std/src/sys/unix/thread.rs:108
#18 0x00007ffff77398fd in start_thread (arg=<optimized out>) at pthread_create.c:442
#19 0x00007ffff77bba60 in clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:81
(gdb)
yshui commented 1 year ago

hmm, this doesn't look good :cry:

do you have valgrind installed? can you run the application under valgrind?

duckbytes commented 1 year ago

I've found the problem. Seeing all these errors about radeonsi_dri.so, I remembered that a few days ago I had installed mesa-git from the AUR. I replaced it with mesa from the repository and vulkan-radeon (mesa-git had removed it automatically). Now things are working again!

For reference this was the output from valgrind:

==81697== Memcheck, a memory error detector
==81697== Copyright (C) 2002-2022, and GNU GPL'd, by Julian Seward et al.
==81697== Using Valgrind-3.19.0 and LibVEX; rerun with -h for copyright info
==81697== Command: target/release/picom-xrdesktop-companion
==81697==
ClientMode::Overlay
Load manifest path /home/theo/.cache/xrdesktop.openvr/actions.json
==81697== Thread 12:
==81697== Invalid read of size 8
==81697==    at 0x18A5693C: ??? (in /usr/lib/dri/radeonsi_dri.so)
==81697==    by 0x18307E5D: ??? (in /usr/lib/dri/radeonsi_dri.so)
==81697==    by 0x182ED42C: ??? (in /usr/lib/dri/radeonsi_dri.so)
==81697==    by 0x185751D8: ??? (in /usr/lib/dri/radeonsi_dri.so)
==81697==    by 0x1857596D: ??? (in /usr/lib/dri/radeonsi_dri.so)
==81697==    by 0x1855D429: ??? (in /usr/lib/dri/radeonsi_dri.so)
==81697==    by 0x1847F147: ??? (in /usr/lib/dri/radeonsi_dri.so)
==81697==    by 0x1847F52C: ??? (in /usr/lib/dri/radeonsi_dri.so)
==81697==    by 0x18529157: ??? (in /usr/lib/dri/radeonsi_dri.so)
==81697==    by 0x2B2C77: glium::buffer::alloc::Alloc::new (in /home/theo/git/picom-xrdesktop-companion/target/release/picom-xrdesktop-companion)
==81697==    by 0x2EFF10: picom_xrdesktop_companion::gl::GlInner::blit (in /home/theo/git/picom-xrdesktop-companion/target/release/picom-xrdesktop-companion)
==81697==    by 0x315734: core::ops::function::FnOnce::call_once{{vtable.shim}} (in /home/theo/git/picom-xrdesktop-companion/target/release/picom-xrdesktop-companion)
==81697==  Address 0x8 is not stack'd, malloc'd or (recently) free'd
==81697==
==81697==
==81697== Process terminating with default action of signal 11 (SIGSEGV): dumping core
==81697==  Access not within mapped region at address 0x8
==81697==    at 0x18A5693C: ??? (in /usr/lib/dri/radeonsi_dri.so)
==81697==    by 0x18307E5D: ??? (in /usr/lib/dri/radeonsi_dri.so)
==81697==    by 0x182ED42C: ??? (in /usr/lib/dri/radeonsi_dri.so)
==81697==    by 0x185751D8: ??? (in /usr/lib/dri/radeonsi_dri.so)
==81697==    by 0x1857596D: ??? (in /usr/lib/dri/radeonsi_dri.so)
==81697==    by 0x1855D429: ??? (in /usr/lib/dri/radeonsi_dri.so)
==81697==    by 0x1847F147: ??? (in /usr/lib/dri/radeonsi_dri.so)
==81697==    by 0x1847F52C: ??? (in /usr/lib/dri/radeonsi_dri.so)
==81697==    by 0x18529157: ??? (in /usr/lib/dri/radeonsi_dri.so)
==81697==    by 0x2B2C77: glium::buffer::alloc::Alloc::new (in /home/theo/git/picom-xrdesktop-companion/target/release/picom-xrdesktop-companion)
==81697==    by 0x2EFF10: picom_xrdesktop_companion::gl::GlInner::blit (in /home/theo/git/picom-xrdesktop-companion/target/release/picom-xrdesktop-companion)
==81697==    by 0x315734: core::ops::function::FnOnce::call_once{{vtable.shim}} (in /home/theo/git/picom-xrdesktop-companion/target/release/picom-xrdesktop-companion)
==81697==  If you believe this happened as a result of a stack
==81697==  overflow in your program's main thread (unlikely but
==81697==  possible), you can try to increase the size of the
==81697==  main thread stack using the --main-stacksize= flag.
==81697==  The main thread stack size used in this run was 8388608.
==81697==
==81697== HEAP SUMMARY:
==81697==     in use at exit: 21,202,514 bytes in 75,661 blocks
==81697==   total heap usage: 212,080 allocs, 136,419 frees, 418,678,492 bytes allocated
==81697==
==81697== LEAK SUMMARY:
==81697==    definitely lost: 158 bytes in 6 blocks
==81697==    indirectly lost: 304 bytes in 5 blocks
==81697==      possibly lost: 6,651,919 bytes in 49,028 blocks
==81697==    still reachable: 14,506,101 bytes in 26,278 blocks
==81697==                       of which reachable via heuristic:
==81697==                         stdstring          : 82,203 bytes in 1,636 blocks
==81697==                         multipleinheritance: 4,512 bytes in 12 blocks
==81697==         suppressed: 0 bytes in 0 blocks
==81697== Rerun with --leak-check=full to see details of leaked memory
==81697==
==81697== For lists of detected and suppressed errors, rerun with: -s
==81697== ERROR SUMMARY: 2 errors from 1 contexts (suppressed: 0 from 0)
[1]    81697 segmentation fault (core dumped)  valgrind target/release/picom-xrdesktop-companion

The mesa-git version I had installed was 23.0.0_devel.162796.88f1fad3f76.d41d8cd98f00b204e9800998ecf8427e-1

Thank you for your help!

duckbytes commented 1 year ago

Unfortunately it looks like mesa has caught up in the repositories, because I'm getting segfaults again.

#2  0x00007fffbe14816d in  () at /usr/lib/dri/radeonsi_dri.so                                                                                                                                                [21/156]
#3  0x00007fffbe3d0409 in  () at /usr/lib/dri/radeonsi_dri.so
#4  0x00007fffbe3d0b9e in  () at /usr/lib/dri/radeonsi_dri.so
#5  0x00007fffbe3b865a in  () at /usr/lib/dri/radeonsi_dri.so
#6  0x00007fffbe2d9ed8 in  () at /usr/lib/dri/radeonsi_dri.so
#7  0x00007fffbe2da2bd in  () at /usr/lib/dri/radeonsi_dri.so
#8  0x00007fffbe383fe8 in  () at /usr/lib/dri/radeonsi_dri.so
#9  0x00005555556fec78 in glium::buffer::alloc::Alloc::new ()
#10 0x000055555573bf11 in picom_xrdesktop_companion::gl::GlInner::blit ()
#11 0x0000555555761735 in core::ops::function::FnOnce::call_once{{vtable.shim}} ()
--Type <RET> for more, q to quit, c to continue without paging--
#12 0x0000555555788d44 in picom_xrdesktop_companion::utils::RemoteInner<T>::run ()
#13 0x00005555556ecfc4 in std::sys_common::backtrace::__rust_begin_short_backtrace ()
#14 0x00005555556fb119 in core::ops::function::FnOnce::call_once{{vtable.shim}} ()
#15 0x00005555558847a5 in alloc::boxed::{impl#44}::call_once<(), dyn core::ops::function::FnOnce<(), Output=()>, alloc::alloc::Global> () at library/alloc/src/boxed.rs:1951
#16 alloc::boxed::{impl#44}::call_once<(), alloc::boxed::Box<dyn core::ops::function::FnOnce<(), Output=()>, alloc::alloc::Global>, alloc::alloc::Global> () at library/alloc/src/boxed.rs:1951
#17 std::sys::unix::thread::{impl#2}::new::thread_start () at library/std/src/sys/unix/thread.rs:108
#18 0x00007ffff77448fd in  () at /usr/lib/libc.so.6
#19 0x00007ffff77c6d20 in  () at /usr/lib/libc.so.6

Looks like it's the same problem as before, but downgrading mesa breaks Gnome.

yshui commented 1 year ago

Sorry I didn't have time to look into this. I will try to look into the crash in the next a couple of days.

RE: 0.16 support

Unfortunately 0.16 moved to openxr and abandoned steamvr support. While steamvr does provide an openxr implementation, that doesn't support overlays. So I don't plan to support 0.16 until overlays are supported.

duckbytes commented 1 year ago

It's no problem. Thanks for looking into it.

I realised later too that 0.16 has dropped overlay support, so understand that it won't be ported over.

yshui commented 1 year ago

i might have fixed the problem, or at least i can't reproduce the crash on my side. can you test again with the new changes?

duckbytes commented 1 year ago

It works. Thanks so much!