[Pkg-utopia-maintainers] Bug#1035280: pipewire-pulse 0.3.70 client side crash when load-module module-zeroconf-discover against a pipewire-pulse with module-native-protocol-tcp and module-zeroconf-publish
Alban Browaeys
prahal at yahoo.com
Sun Apr 30 01:18:19 BST 2023
Package: pipewire
Version: 0.3.70-1
Severity: important
Dear Maintainer,
I upgraded pipewire to 0.3.70 on boht the pipewire-pulse client and server side of the native "pulseaudio" tcp tunnel.
I restart pipewire and pipewire-pulse user systemd services and then the client box pipewire-pulse started constantly
crashing and reloading.
systemctl --user status pipewire-pulse
× pipewire-pulse.service - PipeWire PulseAudio
Loaded: loaded (/usr/lib/systemd/user/pipewire-pulse.service; enabled; preset: enabled)
Active: failed (Result: core-dump) since Sun 2023-04-30 02:07:45 CEST; 10s ago
Duration: 1.593s
TriggeredBy: ○ pipewire-pulse.socket
Process: 2254260 ExecStart=/usr/bin/pipewire-pulse (code=dumped, signal=SEGV)
Main PID: 2254260 (code=dumped, signal=SEGV)
CPU: 1.175s
avril 30 02:07:41 cyclope systemd[7728]: Started pipewire-pulse.service - PipeWire PulseAudio.
avril 30 02:07:41 cyclope pipewire-pulse[2254260]: mod.pulse-tunnel: failed to connect: Connection refused
avril 30 02:07:41 cyclope pipewire-pulse[2254260]: mod.zeroconf-discover: Can't load module: Connexion refusée
avril 30 02:07:43 cyclope systemd[7728]: Stopping pipewire-pulse.service - PipeWire PulseAudio...
avril 30 02:07:45 cyclope systemd-coredump[2254277]: Process 2254260 (pipewire-pulse) of user 1000 dumped core.
Stack trace of thread 2254260:
#0 0x00007f58a57d0ea0 pw_impl_module_schedule_destroy (libpipewire-0.3.so.0 + 0x72ea0)
#1 0x00007f58a4c64b0d do_schedule_destroy (libpipewire-module-pulse-tunnel.so + 0x5b0d)
#2 0x00007f58a5885a4f flush_items (libspa-support.so + 0x6a4f)
#3 0x00007f58a5885899 source_event_func (libspa-support.so + 0x6899)
#4 0x00007f58a5887f9e loop_iterate (libspa-support.so + 0x8f9e)
#5 0x00007f58a57cd78b pw_main_loop_run (libpipewire-0.3.so.0 + 0x6f78b)
#6 0x00005590e0b4c457 main (pipewire + 0x1457)
#7 0x00007f58a55a418a __libc_start_call_main (libc.so.6 + 0x2718a)
#8 0x00007f58a55a4245 __libc_start_main_impl (libc.so.6 + 0x27245)
#9 0x00005590e0b4c5f1 _start (pipewire + 0x15f1)
Stack trace of thread 2254264:
#0 0x00007f58a5685c06 epoll_wait (libc.so.6 + 0x108c06)
#1 0x00007f58a5896ec0 impl_pollfd_wait (libspa-support.so + 0x17ec0)
#2 0x00007f58a5887e1b loop_iterate (libspa-support.so + 0x8e1b)
#3 0x00007f58a57a7f6c do_loop (libpipewire-0.3.so.0 + 0x49f6c)
#4 0x00007f58a5605fd4 start_thread (libc.so.6 + 0x88fd4)
#5 0x00007f58a5685820 __clone (libc.so.6 + 0x108820)
Stack trace of thread 2254269:
#0 0x00007f58a5678fff __GI___poll (libc.so.6 + 0xfbfff)
#1 0x00007f58a3ec02e1 n/a (libpulse.so.0 + 0x342e1)
#2 0x00007f58a3eb1fa4 pa_mainloop_poll (libpulse.so.0 + 0x25fa4)
#3 0x00007f58a3eb2606 pa_mainloop_iterate (libpulse.so.0 + 0x26606)
#4 0x00007f58a3eb26b0 pa_mainloop_run (libpulse.so.0 + 0x266b0)
#5 0x00007f58a3ec03b9 n/a (libpulse.so.0 + 0x343b9)
#6 0x00007f58a3e6133f n/a (libpulsecommon-16.1.so + 0x5b33f)
#7 0x00007f58a5605fd4 start_thread (libc.so.6 + 0x88fd4)
#8 0x00007f58a5685820 __clone (libc.so.6 + 0x108820)
Stack trace of thread 2254275:
#0 0x00007f58a5678fff __GI___poll (libc.so.6 + 0xfbfff)
#1 0x00007f58a3ec02e1 n/a (libpulse.so.0 + 0x342e1)
#2 0x00007f58a3eb1fa4 pa_mainloop_poll (libpulse.so.0 + 0x25fa4)
#3 0x00007f58a3eb2606 pa_mainloop_iterate (libpulse.so.0 + 0x26606)
#4 0x00007f58a3eb26b0 pa_mainloop_run (libpulse.so.0 + 0x266b0)
#5 0x00007f58a3ec03b9 n/a (libpulse.so.0 + 0x343b9)
#6 0x00007f58a3e6133f n/a (libpulsecommon-16.1.so + 0x5b33f)
#7 0x00007f58a5605fd4 start_thread (libc.so.6 + 0x88fd4)
#8 0x00007f58a5685820 __clone (libc.so.6 + 0x108820)
Stack trace of thread 2254271:
#0 0x00007f58a5678fff __GI___poll (libc.so.6 + 0xfbfff)
#1 0x00007f58a3ec02e1 n/a (libpulse.so.0 + 0x342e1)
#2 0x00007f58a3eb1fa4 pa_mainloop_poll (libpulse.so.0 + 0x25fa4)
#3 0x00007f58a3eb2606 pa_mainloop_iterate (libpulse.so.0 + 0x26606)
#4 0x00007f58a3eb26b0 pa_mainloop_run (libpulse.so.0 + 0x266b0)
#5 0x00007f58a3ec03b9 n/a (libpulse.so.0 + 0x343b9)
#6 0x00007f58a3e6133f n/a (libpulsecommon-16.1.so + 0x5b33f)
#7 0x00007f58a5605fd4 start_thread (libc.so.6 + 0x88fd4)
#8 0x00007f58a5685820 __clone (libc.so.6 + 0x108820)
ELF object binary architecture: AMD x86-64
avril 30 02:07:45 cyclope systemd[7728]: pipewire-pulse.service: Main process exited, code=dumped, status=11/SEGV
avril 30 02:07:45 cyclope systemd[7728]: pipewire-pulse.service: Failed with result 'core-dump'.
avril 30 02:07:45 cyclope systemd[7728]: Stopped pipewire-pulse.service - PipeWire PulseAudio.
avril 30 02:07:45 cyclope systemd[7728]: pipewire-pulse.service: Consumed 1.175s CPU time.
(gdb) bt
#0 pw_impl_module_schedule_destroy (module=0x65756c6222203a22) at ../src/pipewire/impl-module.c:403
#1 0x00007f58a4c64b0d in do_schedule_destroy
(loop=<optimized out>, async=<optimized out>, seq=<optimized out>, data=<optimized out>, size=<optimized out>, user_data=<optimized out>)
at ../src/modules/module-pulse-tunnel.c:503
#2 0x00007f58a5885a4f in flush_items (impl=0x5590e270be78) at ../spa/plugins/support/loop.c:171
#3 0x00007f58a5885899 in source_event_func (source=0x5590e2713fa0) at ../spa/plugins/support/loop.c:602
#4 0x00007f58a5887f9e in loop_iterate (object=0x5590e270be78, timeout=-1) at ../spa/plugins/support/loop.c:439
#5 0x00007f58a57cd78b in pw_main_loop_run (loop=loop at entry=0x5590e270bd20) at ../src/pipewire/main-loop.c:128
#6 0x00005590e0b4c457 in main (argc=<optimized out>, argv=<optimized out>) at ../src/daemon/pipewire.c:111
(gdb) bt full
#0 pw_impl_module_schedule_destroy (module=0x65756c6222203a22) at ../src/pipewire/impl-module.c:403
impl = 0x65756c6222203a22
#1 0x00007f58a4c64b0d in do_schedule_destroy
(loop=<optimized out>, async=<optimized out>, seq=<optimized out>, data=<optimized out>, size=<optimized out>, user_data=<optimized out>)
at ../src/modules/module-pulse-tunnel.c:503
impl = <optimized out>
#2 0x00007f58a5885a4f in flush_items (impl=0x5590e270be78) at ../spa/plugins/support/loop.c:171
item = 0x5590e270bfe8
block = false
func = <optimized out>
index = 128
flush_count = 2
avail = 128
res = <optimized out>
__func__ = "flush_items"
#3 0x00007f58a5885899 in source_event_func (source=0x5590e2713fa0) at ../spa/plugins/support/loop.c:602
s = 0x5590e2713fa0
count = 2
res = <optimized out>
__func__ = "source_event_func"
#4 0x00007f58a5887f9e in loop_iterate (object=0x5590e270be78, timeout=-1) at ../spa/plugins/support/loop.c:439
s = <optimized out>
__cancel_buf =
{__cancel_jmp_buf = {{__cancel_jmp_buf = {94080762691360, 7449369256737684004, 4294967295, 94080733604928, 94080733604920, 140018711351328, 3727605051411184164, 3670985854614682148}, __mask_was_saved = 0}}, __pad = {0x7ffdd01a78b0, 0x0, 0x7f58a580d5a9, 0x5590e275ef80}}
__cancel_routine = 0x7f58a58853d0 <cancellation_handler>
__cancel_arg = <optimized out>
__not_first_call = <optimized out>
impl = 0x5590e270be78
ep =
{{events = 1, data = 0x5590e275d9d0}, {events = 1, data = 0x5590e278ad90}, {events = 1, data = 0x5590e275a440}, {events = 1, data = 0x5590e2713fa0}, {events = 1, data = 0x5590e271fde0}, {events = 2, data = 0x5590e2760470}, {events = 3799385184, data = 0x7f58a5615799 <__GI___libc_malloc+153>}, {events = 3799379616, data = 0x7892cb34fcc2d200}, {events = 2776733779, data = 0xe}, {events = 3799385120, data = 0x7f58a5819853}, {events = 3799385200, data = 0x5590e2760420}, {events = 2, data = 0x7f58a57f3b3b <do_replace+411>}, {events = 3799385440, data = 0x5590e2760660}, {events = 2775907424, data = 0xc}, {events = 2775907440, data = 0x5590e275ef90}, {events = 2776733779, data = 0xa}, {events = 3799258704, data = 0x5590e2714408}, {events = 0, data = 0x0}, {events = 0, data = 0x0}, {events = 0, data = 0x7892cb34fcc2d200}, {events = 0, data = 0x5590e275f080}, {events = 3799073040, data = 0xa}, {events = 3799073040, data = 0x7f58a580e960}, {events = 3799073040, data = 0x7f58a57e0c48 <pw_impl_metadata_register+200>}, {events = 3799073040, data = 0x5590e275ef20}, {events = 3799073040, data = 0x7f58a57f8f9c <pw_settings_expose+108>}, {events = 3799073040, data = 0x7f58a58582d8 <log_context>}, --Type <RET> for more, q to quit, c to continue without paging--
{events = 2776689160, data = 0x7f58a57a0bb7 <pw_context_new+2663>}, {events = 3799073040, data = 0x7f58a57a0b84 <pw_context_new+2612>}, {events = 3799075328, data = 0x559000000009}, {events = 2776688730, data = 0x7f58a58853b4 <loop_add_source+84>}, {events = 3799039608, data = 0xf}}
e = <optimized out>
i = 3
nfds = 5
cdata = {ep = 0x7ffdd01a65f0, ep_count = 5}
__func__ = "loop_iterate"
#5 0x00007f58a57cd78b in pw_main_loop_run (loop=loop at entry=0x5590e270bd20) at ../src/pipewire/main-loop.c:128
_f = <optimized out>
_res = -95
_o = <optimized out>
res = 0
__func__ = "pw_main_loop_run"
#6 0x00005590e0b4c457 in main (argc=<optimized out>, argv=<optimized out>) at ../src/daemon/pipewire.c:111
context = 0x5590e2714110
loop = 0x5590e270bd20
properties = 0x0
long_options =
{{name = 0x5590e0b4d08f "help", has_arg = 0, flag = 0x0, val = 104}, {name = 0x5590e0b4d094 "version", has_arg = 0, flag = 0x0, val = 86}, {name = 0x5590e0b4d09c "config", has_arg = 1, flag = 0x0, val = 99}, {name = 0x5590e0b4d0a3 "verbose", has_arg = 0, flag = 0x0, val = 118}, {name = 0x0, has_arg = 0, flag = 0x0, val = 0}}
c = <optimized out>
res = 0
path = "/usr/bin/pipewire-pulse.conf\000\000\000\000p\003\000\000\000\000\000\000p\003\000\000\000\000\000\000D\000\000\000\000\000\000\000D\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000\a\000\000\000\004\000\000\000\320\350\034\000\000\000\000\000\320\350\034\000\000\000\000\000\320\350\034\000\000\000\000\000\020\000\000\000\000\000\000\000\220\000\000\000\000\000\000\000\b\000\000\000\000\000\000\000S\345td\004\000\000\000P\003\000\000\000\000\000\000P\003\000\000\000\000\000\000P\003\000\000\000\000\000\000 \000\000\000\000\000\000\000 \000\000\000\000\000\000\000\b\000\000\000\000\000\000\000P\345td\004\000\000\000\254\n\032\000\000\000\000\000"...
config_name = <optimized out>
level = <optimized out>
__func__ = "main"
(gdb) l
398 SPA_EXPORT
399 void pw_impl_module_schedule_destroy(struct pw_impl_module *module)
400 {
401 struct impl *impl = SPA_CONTAINER_OF(module, struct impl, this);
402
403 if (impl->destroy_work_id != SPA_ID_INVALID)
404 return;
405
406 impl->destroy_work_id = pw_work_queue_add(pw_context_get_work_queue(module->context),
407 module, 0, do_destroy_module, NULL);
(gdb) p impl
$1 = (struct impl *) 0x65756c6222203a22
(gdb) p *impl
Cannot access memory at address 0x65756c6222203a22
(gdb) up
#1 0x00007f58a4c64b0d in do_schedule_destroy (loop=<optimized out>, async=<optimized out>, seq=<optimized out>, data=<optimized out>, size=<optimized out>,
user_data=<optimized out>) at ../src/modules/module-pulse-tunnel.c:503
503 pw_impl_module_schedule_destroy(impl->module);
(gdb) l
498 static int
499 do_schedule_destroy(struct spa_loop *loop,
500 bool async, uint32_t seq, const void *data, size_t size, void *user_data)
501 {
502 struct impl *impl = user_data;
503 pw_impl_module_schedule_destroy(impl->module);
504 return 0;
505 }
506
507 void module_schedule_destroy(struct impl *impl)
(gdb) p *impl
value has been optimized out
(gdb) up
#2 0x00007f58a5885a4f in flush_items (impl=0x5590e270be78) at ../spa/plugins/support/loop.c:171
171 item->res = func(&impl->loop, true, item->seq, item->data,
(gdb) l
166 * calls don't call the callback again. We can't update the
167 * read index before we call the function because then the item
168 * might get overwritten. */
169 item->func = NULL;
170 if (func)
171 item->res = func(&impl->loop, true, item->seq, item->data,
172 item->size, item->user_data);
173
174 /* if this function did a recursive invoke, it now flushed the
175 * ringbuffer and we can exit */
(gdb) p *impl
$2 = {handle = {version = 0, get_interface = 0x7f58a58888e0 <impl_get_interface>, clear = 0x7f58a5886e70 <impl_clear>}, loop = {iface = {
type = 0x7f58a5898498 "Spa:Pointer:Interface:Loop", version = 0, cb = {funcs = 0x7f58a589e800 <impl_loop>, data = 0x5590e270be78}}}, control = {iface = {
type = 0x7f58a5898970 "Spa:Pointer:Interface:LoopControl", version = 1, cb = {funcs = 0x7f58a589e7c0 <impl_loop_control>, data = 0x5590e270be78}}}, utils = {iface = {
type = 0x7f58a5898998 "Spa:Pointer:Interface:LoopUtils", version = 0, cb = {funcs = 0x7f58a589e760 <impl_loop_utils>, data = 0x5590e270be78}}}, log = 0x5590e270ba50,
system = 0x5590e270bde0, source_list = {next = 0x5590e2817a88, prev = 0x5590e2713fd8}, destroy_list = {next = 0x5590e270bf10, prev = 0x5590e270bf10}, hooks_list = {
list = {next = 0x5590e270bf20, prev = 0x5590e270bf20}}, poll_fd = 4, thread = 140018707834688, enter_count = 1, wakeup = 0x5590e2713fa0, ack_fd = 6, buffer = {
readindex = 128, writeindex = 256}, buffer_data = 0x5590e270bf68 "@",
buffer_mem = "@", '\000' <repeats 15 times>, "\001\000\000\000\000\000\000\000\250\277p\342\220U", '\000' <repeats 18 times>, "`Mw\342\220U\000\000\000\000\000\000\000\000\000\000@", '\000' <repeats 15 times>, "\001\000\000\000\000\000\000\000\350\277p\342\220U", '\000' <repeats 18 times>, "\240\254{\342\220U\000\000\000\000\000\000\000\000\000\000@", '\000' <repeats 15 times>, "\001\000\000\000\000\000\000\000(\300p\342\220U", '\000' <repeats 18 times>, "P\020\200\342\220U\000\000\000\000\000\000\000\000\000\000@\000\000\000\000\000\000\000"..., flush_count = 2, polling = 0}
On the client box disabling ~/.config/pipewire/pipewire-pulse.conf.d/pulse-native-tcp-client.conf
"
pulse.cmd = [
{ cmd = "load-module", args = "module-zeroconf-discover" }
]
"
avoid the pipewire-pulse crash.
I tried upstream master and it seems to fix the issue (but no release yet).
Do you plan on releasing 0.3.70 to unstable? If so I will try to find the master branch commit that fixed the issue.
Cheers,
Alban
-- System Information:
Debian Release: 11.7
APT prefers stable-updates
APT policy: (500, 'stable-updates'), (500, 'stable-security'), (500, 'stable-debug'), (500, 'stable'), (500, 'oldstable'), (100, 'testing-debug'), (100, 'testing'), (90, 'unstable-debug'), (90, 'unstable'), (1, 'experimental-debug'), (1, 'experimental')
merged-usr: no
Architecture: amd64 (x86_64)
Foreign Architectures: i386
Kernel: Linux 6.1.0-7-amd64 (SMP w/4 CPU threads; PREEMPT)
Kernel taint flags: TAINT_OOT_MODULE, TAINT_UNSIGNED_MODULE
Locale: LANG=fr_FR.UTF-8, LC_CTYPE=fr_FR.UTF-8 (charmap=UTF-8), LANGUAGE not set
Shell: /bin/sh linked to /bin/bash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled
Versions of packages pipewire depends on:
ii adduser 3.118
ii init-system-helpers 1.60
ii libpipewire-0.3-modules 0.3.70-1
ii pipewire-bin 0.3.70-1
pipewire recommends no packages.
pipewire suggests no packages.
-- no debconf information
More information about the Pkg-utopia-maintainers
mailing list