FS#78337 - [libpipewire] [pipewire] should libpipewire supply /usr/lib/spa-0.2/support/*.so

Attached to Project: Arch Linux
Opened by John (graysky) - Sunday, 30 April 2023, 11:30 GMT
Last edited by Toolybird (Toolybird) - Tuesday, 30 May 2023, 03:31 GMT
Task Type Bug Report
Category Packages: Extra
Status Closed
Assigned To Jan Alexander Steffens (heftig)
David Runge (dvzrv)
Architecture All
Severity Low
Priority Normal
Reported Version
Due in Version Undecided
Due Date Undecided
Percent Complete 100%
Votes 1
Private No

Details

I maintain kodi-git[1] which is based heavily on the official kodi PKGBUILD. I noticed that the way it is currently built _forces_ a dependency on pipewire whereas the current official PKGBUILD runs fine with just libpipewire. At issue is the absence of several shared objects which libpipewire does not supply but that pipewire does supply, namely:

/usr/lib/spa-0.2/support/libspa-support.so
/usr/lib/spa-0.2/support/libspa-journal.so
/usr/lib/spa-0.2/support/libspa-support.so


When I start kodi-gbm (compiled from kodi-git) via a systemd service[2], I get it core dumping due to these missing *.so files. Note that I passed PIPEWIRE_DEBUG=4 to see more verbose output. When I install the pipewire package, kodi starts and runs since it provides the missing *.so files.

Is this:
a. A new kodi dependency on pipewire (I find none in the linux docs for kodi)?
b. A bug in kodi's code?
c. A problem with how am I building (perhaps there is an alternative way to build/dependencies to circumvent this)?
d. A problem with what we are packaging in pipewire/libpipewire? (Ie should libpipewire be supplying those *.so files)?
e. Something else?

1. https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=kodi-git
2. https://github.com/graysky2/kodi-standalone-service/blob/master/x86/init/kodi-gbm.service

Journalctl output without pipewire installed:
kodi-standalone[4025]: [D] pw.context [pipewire.c:229 load_spa_handle()] load lib:'support/libspa-support' factory-name:'support.log'
kodi-standalone[4025]: [D] pw.context [pipewire.c:113 open_plugin()] can't load /usr/lib/spa-0.2/support/libspa-support.so: /usr/lib/spa-0.2/support/libspa-support.so: cannot open shared object file: No such file or directory
kodi-standalone[4025]: [D] pw.context [pipewire.c:229 load_spa_handle()] load lib:'support/libspa-journal' factory-name:'support.log'
kodi-standalone[4025]: [D] pw.context [pipewire.c:113 open_plugin()] can't load /usr/lib/spa-0.2/support/libspa-journal.so: /usr/lib/spa-0.2/support/libspa-journal.so: cannot open shared object file: No such file or directory
kodi-standalone[4025]: [D] pw.context [pipewire.c:229 load_spa_handle()] load lib:'support/libspa-support' factory-name:'support.cpu'
kodi-standalone[4025]: [D] pw.context [pipewire.c:113 open_plugin()] can't load /usr/lib/spa-0.2/support/libspa-support.so: /usr/lib/spa-0.2/support/libspa-support.so: cannot open shared object file: No such file or directory
kodi-standalone[4025]: [I] pw.context [pipewire.c:647 pw_init()] version 0.3.70
kodi-standalone[4025]: [D] pw.thread-loop [thread-loop.c:145 loop_new()] 0x55874c5fc690: new name:pipewire
kodi-standalone[4025]: [D] pw.context [pipewire.c:229 load_spa_handle()] load lib:'support/libspa-support' factory-name:'support.system'
kodi-standalone[4025]: [D] pw.context [pipewire.c:113 open_plugin()] can't load /usr/lib/spa-0.2/support/libspa-support.so: /usr/lib/spa-0.2/support/libspa-support.so: cannot open shared object file: No such file or directory
kodi-standalone[4025]: [E] pw.loop [loop.c:67 pw_loop_new()] 0x55874c5e7980: can't make support.system handle: No such file or directory
kodi-standalone[4025]: terminate called after throwing an instance of 'std::runtime_error'
kodi-standalone[4025]: what(): CPipewireThreadLoop: failed to create main loop
systemd[1]: Started Process Core Dump (PID 4029/UID 0).
systemd-coredump[4030]: [🡕] Process 4025 (kodi.bin) of user 981 dumped core.

Stack trace of thread 4025:
#0 0x00007faafb2618ec n/a (libc.so.6 + 0x878ec)
#1 0x00007faafb212ea8 raise (libc.so.6 + 0x38ea8)
#2 0x00007faafb1fc53d abort (libc.so.6 + 0x2253d)
#3 0x00007faafac9a833 _ZN9__gnu_cxx27__verbose_terminate_handlerEv (libstdc++.so.6 + 0x9a833)
#4 0x00007faafaca6d0c _ZN10__cxxabiv111__terminateEPFvvE (libstdc++.so.6 + 0xa6d0c)
#5 0x00007faafaca6d79 _ZSt9terminatev (libstdc++.so.6 + 0xa6d79)
#6 0x00007faafaca6fdd __cxa_throw (libstdc++.so.6 + 0xa6fdd)
#7 0x0000558748bfdd6b n/a (kodi.bin + 0x98fd6b)
#8 0x000055874a1994c1 _ZN4KODI8PIPEWIRE9CPipewire5StartEv (kodi.bin + 0x1f2b4c1)
#9 0x000055874a199b28 _ZN4KODI8PIPEWIRE9CPipewire6CreateEv (kodi.bin + 0x1f2bb28)
#10 0x000055874a192dab _ZN2AE4SINK15CAESinkPipewire8RegisterEv (kodi.bin + 0x1f24dab)
#11 0x0000558748fcdfb6 _ZN14CPlatformLinux12InitStageOneEv (kodi.bin + 0xd5ffb6)
#12 0x000055874998ab82 _ZN15CServiceManager12InitStageOneEv (kodi.bin + 0x171cb82)
#13 0x0000558749728cfd _ZN12CApplication6CreateEv (kodi.bin + 0x14bacfd)
#14 0x00005587494dcdf8 XBMC_Run (kodi.bin + 0x126edf8)
#15 0x0000558748ca41d7 main (kodi.bin + 0xa361d7)
#16 0x00007faafb1fd790 n/a (libc.so.6 + 0x23790)
#17 0x00007faafb1fd84a __libc_start_main (libc.so.6 + 0x2384a)
#18 0x0000558748d16f35 _start (kodi.bin + 0xaa8f35)

Stack trace of thread 4028:
#0 0x00007faafb25c766 n/a (libc.so.6 + 0x82766)
#1 0x00007faafb25ef90 pthread_cond_wait (libc.so.6 + 0x84f90)
#2 0x00007faafaccfe51 __gthread_cond_wait (libstdc++.so.6 + 0xcfe51)
#3 0x0000558749fa1251 _ZN12ANNOUNCEMENT20CAnnouncementManager7ProcessEv (kodi.bin + 0x1d33251)
#4 0x000055874948b6e5 _ZN7CThread6ActionEv (kodi.bin + 0x121d6e5)
#5 0x000055874948c4b0 n/a (kodi.bin + 0x121e4b0)
#6 0x00007faafacd72c3 execute_native_thread_routine (libstdc++.so.6 + 0xd72c3)
#7 0x00007faafb25fbb5 n/a (libc.so.6 + 0x85bb5)
#8 0x00007faafb2e1d90 n/a (libc.so.6 + 0x107d90)
ELF object binary architecture: AMD x86-64
systemd[1]: systemd-coredump@3-4029-0.service: Deactivated successfully.
kodi-standalone[4020]: /usr/bin/kodi: line 181: 4025 Aborted (core dumped) ${KODI_BINARY} $SAVED_ARGS
kodi-standalone[4020]: Crash report available at /var/lib/kodi/kodi_crashlog-20230430_070427.log
This task depends upon

Closed by  Toolybird (Toolybird)
Tuesday, 30 May 2023, 03:31 GMT
Reason for closing:  Won't fix
Additional comments about closing:  See comments from PM. Upstream ticket proposes a fix on the Kodi side.
Comment by John (graysky) - Sunday, 30 April 2023, 15:28 GMT
Please see the post by progandy.[1] Seems like allowing libpipewire to own these files would be a sane move.
Comment by A. Bosch (progandy) - Sunday, 30 April 2023, 17:30 GMT
My post is here: https://bbs.archlinux.org/viewtopic.php?pid=2097209#p2097209

Some more information:
Debain has a separate package for libspa modules and libpipewire has a hard dependency on it.

https://packages.debian.org/sid/libpipewire-0.3-0
https://packages.debian.org/sid/amd64/libspa-0.2-modules/filelist

The main reason it fails seems to be that the libspa-support module contains functions to help with event loops and libpipewire uses that.
https://docs.pipewire.org/group__spa__loop.html

If the libspa-support module is not made available to libpipewire, then at minimum patch to kodi would be required, maybe other applications could run into the same issue as well.
Comment by John (graysky) - Sunday, 30 April 2023, 18:13 GMT
I think it is a little more complex... through trial-and-error, it seems that the following files from pipewire are needed:
/usr/lib/spa-0.2/support/libspa-support.so
/usr/lib/spa-0.2/support/libspa-journal.so
/usr/lib/spa-0.2/support/libspa-dbus.so
/usr/share/pipewire/client.conf
/usr/lib/pipewire-0.3/libpipewire-module-adapter.so
/usr/lib/pipewire-0.3/libpipewire-module-client-device.so
/usr/lib/pipewire-0.3/libpipewire-module-client-node.so
/usr/lib/pipewire-0.3/libpipewire-module-metadata.so
/usr/lib/pipewire-0.3/libpipewire-module-protocol-native.so
/usr/lib/pipewire-0.3/libpipewire-module-session-manager.so
Comment by Jan Alexander Steffens (heftig) - Monday, 01 May 2023, 17:57 GMT
AFAICT this is Kodi throwing an exception and crashing when PipeWire fails to initialize. I think Kodi needs to be more tolerant here.
Comment by John (graysky) - Monday, 01 May 2023, 20:54 GMT
I opened a ticket against kodi here: https://github.com/xbmc/xbmc/issues/23225

Loading...