Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Hang exiting audio wizard with pipewire #5723

Closed
pwaller opened this issue Jun 11, 2022 · 3 comments
Closed

Hang exiting audio wizard with pipewire #5723

pwaller opened this issue Jun 11, 2022 · 3 comments
Labels
bug A bug (error) in the software triage This issue is waiting to be triaged by one of the project members

Comments

@pwaller
Copy link

pwaller commented Jun 11, 2022

Description

Mumble hangs when clicking 'Finish' in the audio wizard. It is repeatable.

It worked before I enabled pipewire on my system, so pipewire is implicated. I have captured a gdb stack trace suggesting it is blocked in pw_stream_destroy.

(Edit: Selecting the 'pulseaudio' device allows me to proceed to the end of the audio wizard).

Steps to reproduce

  1. Enable pipewire on my system
  2. Reboot
  3. Start mumble
  4. Run through the audio wizard
  5. Click 'Finish'

Mumble version

1.4.231

Mumble component

Client

OS

Linux

Reproducible?

Yes

Additional information

It appears that something inside pw_stream_destroy is blocking when mumble is not prepared for it to do so.

I captured the backtrace by doing thread apply bt all in gdb. There are a number of other threads but I have elided those since they're blocked in less interesting places, the chosen part of the trace looks salient to me because it involves a blocking read() call connected to the mouseReleaseEvent from my click of the Finish button.

Relevant log output

#0  0x00007ffff54fa7c4 in read () from glibc-2.34-210/lib/libc.so.6
#1  0x00007fffdc12d983 in impl_eventfd_read () from pipewire-0.3.51-lib/lib/spa-0.2/support/libspa-support.so
#2  0x00007fffdc120599 in loop_invoke () from pipewire-0.3.51-lib/lib/spa-0.2/support/libspa-support.so
#3  0x00007fffdc1ab168 in pw_impl_node_set_active () from pipewire-0.3.51-lib/lib/libpipewire-0.3.so
#4  0x00007fffdc1cf1cc in pw_stream_disconnect () from pipewire-0.3.51-lib/lib/libpipewire-0.3.so
#5  0x00007fffdc1cf5f8 in pw_stream_destroy () from pipewire-0.3.51-lib/lib/libpipewire-0.3.so
#6  0x00000000006d194b in PipeWireEngine::~PipeWireEngine (this=0x18e1c70, __in_chrg=<optimized out>) at /build/source/src/mumble/PipeWire.cpp:213
#7  0x00000000006d1ffd in std::default_delete<PipeWireEngine>::operator() (__ptr=0x18e1c70, this=<optimized out>) at gcc-11.3.0/include/c++/11.3.0/bits/unique_ptr.h:85
#8  std::unique_ptr<PipeWireEngine, std::default_delete<PipeWireEngine> >::~unique_ptr (this=0x18e0fd8, __in_chrg=<optimized out>) at gcc-11.3.0/include/c++/11.3.0/bits/unique_ptr.h:361
#9  PipeWireOutput::~PipeWireOutput (this=0x18e0f70, __in_chrg=<optimized out>) at /build/source/src/mumble/PipeWire.cpp:385
#10 0x00000000006d202b in PipeWireOutput::~PipeWireOutput (this=0x18e0f70, __in_chrg=<optimized out>) at /build/source/src/mumble/PipeWire.cpp:385
#11 0x00000000004e3257 in boost::checked_delete<AudioOutput> (x=<optimized out>) at include/boost/core/checked_delete.hpp:36
#12 boost::detail::sp_counted_impl_p<AudioOutput>::dispose (this=<optimized out>) at include/boost/smart_ptr/detail/sp_counted_impl.hpp:89
#13 0x00000000004d49b9 in boost::detail::sp_counted_base::release (this=0x18e1450) at include/boost/smart_ptr/detail/sp_counted_base_gcc_atomic.hpp:120
#14 boost::detail::shared_count::~shared_count (this=0x7fffffffadb8, __in_chrg=<optimized out>) at include/boost/smart_ptr/detail/shared_count.hpp:432
#15 boost::shared_ptr<AudioOutput>::~shared_ptr (this=0x7fffffffadb0, __in_chrg=<optimized out>) at include/boost/smart_ptr/shared_ptr.hpp:335
#16 boost::shared_ptr<AudioOutput>::reset (this=0x7fffffffada0) at include/boost/smart_ptr/shared_ptr.hpp:729
#17 Audio::stop () at /build/source/src/mumble/Audio.cpp:315
#18 0x00000000004ee630 in AudioWizard::restartAudio (this=this@entry=0x198c170) at /build/source/src/mumble/AudioWizard.cpp:367
#19 0x00000000004f21f3 in AudioWizard::accept (this=0x198c170) at /build/source/src/mumble/AudioWizard.cpp:433
#20 0x00007ffff5d00b68 in ?? () from qtbase-5.15.3/lib/libQt5Core.so.5
#21 0x00007ffff78658d2 in QAbstractButton::clicked(bool) () from qtbase-5.15.3/lib/libQt5Widgets.so.5
#22 0x00007ffff7865b4a in ?? () from qtbase-5.15.3/lib/libQt5Widgets.so.5
#23 0x00007ffff7867710 in ?? () from qtbase-5.15.3/lib/libQt5Widgets.so.5
#24 0x00007ffff7867933 in QAbstractButton::mouseReleaseEvent(QMouseEvent*) () from qtbase-5.15.3/lib/libQt5Widgets.so.5

Screenshots

image

@pwaller pwaller added bug A bug (error) in the software triage This issue is waiting to be triaged by one of the project members labels Jun 11, 2022
@davidebeatrici
Copy link
Member

You wrote 1.4.231, I assume you meant 1.4.230.

The issue should be fixed in the next stable release: #5648

@vimpostor
Copy link
Contributor

vimpostor commented Jun 12, 2022

Thanks for the detailed bug report (complete with backtrace), but this is a duplicate of #5647.

BTW the issue is also fixed if you use Pipewire 0.3.52 (Pipewire will then just do a few xruns instead of an endless loop).
Alternatively it is also fixed on Mumble master branch for all Pipewire versions

@pwaller
Copy link
Author

pwaller commented Jun 12, 2022

Thanks both, apologies for the noise! I'll assume this is the solution and report back if I have other problems.

I didn't realise it but actually I was using an unreleased version of mumble, via NixOS/nixpkgs@c267e9c which is mumble 9e0e274.

@pwaller pwaller closed this as completed Jun 12, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug A bug (error) in the software triage This issue is waiting to be triaged by one of the project members
Projects
None yet
Development

No branches or pull requests

3 participants