On Thu, Mar 12 2020, Nam Nguyen <n...@berkeley.edu> wrote: > Rafael Sadowski writes: > >> Fixed that issue and also added jack as a dependency. > > Here is a diff for audio/mumble that: > - Removes jack. > - Returns to portaudio-svn by bringing back a reduced patch from the > attic. > > The patch is reduced because data collection is opt-in during audio > wizard setup, the protobuf fix was added upstream, and text-to-speech > does not work anyways. Audio wizard still crashes without this patch > (https://github.com/mumble-voip/mumble/issues/1138). > > I tested for several hours tonight, and it seems much more stable. I did > manage to crash it once when setting input shortcuts. > > I see that jakemsr@ wrote the sndio backend for jack, which was added > upstream to jack. I propose keeping portaudio until sndio itself is > added or the sndio backend for jack is fixed. The drawback is that this > pull request mentions that PortAudio is "practically unmaintained." > > WIP sndio (2016): https://github.com/mumble-voip/mumble/pull/2676 > > Feedback and tests are welcome.
Committed, thanks. jack output proved itself unreliable after a few minutes of testing. I have also added a debug-mumble package since I hit a crash I could not reproduce. > Bug report: > > After 5-10 minutes mumble becomes unresponsive to my push-to-talk key > and fails to receive audio from other users. Then I have to restart > mumble and sndiod. It is hard to reproduce, but I managed to find a way > that involves restarting mumble repeatedly. It usually triggers within > 10 starts of mumble. > > 1. restart sndiod > /etc/rc.d/sndiod restart > 2. Start jackd: jackd -d sndio > 3. Use mpv and youtube-dl on a youtube video > 4. Start mumble > 5. Keep restarting mumble until you see > - mumble: "zombified - calling shutdown handler" Spotted on my 2nd mumble run, no standalone jackd running, no need for another program like mpv using sndiod. > - jackd: "subgraph starting at mumble timed out (subgraph_wait_fd=9, > status = 0, state = Running, pollret = 0 revents = 0x0)" > 6. Once you see zombified, connect to a mumble server and try to input > voice. It will not register the input. > > I also sometimes get in the jackd log: > sndio_driver: poll() error: sndio_driver.c@422 > > Index: Makefile > =================================================================== > RCS file: /cvs/ports/audio/mumble/Makefile,v > retrieving revision 1.37 > diff -u -p -r1.37 Makefile > --- Makefile 6 Mar 2020 12:00:09 -0000 1.37 > +++ Makefile 12 Mar 2020 07:21:18 -0000 > @@ -3,6 +3,7 @@ > COMMENT = low-latency voice chat client > > DISTNAME = mumble-1.3.0 > +REVISION = 0 > > CATEGORIES = audio > > @@ -15,8 +16,8 @@ EXTRACT_SUFX = .zip > PERMIT_PACKAGE = Yes > > WANTLIB += ${COMPILER_LIBCXX} GL Qt5Core Qt5DBus Qt5Gui Qt5Network > -WANTLIB += Qt5Sql Qt5Svg Qt5Widgets Qt5Xml X11 Xi c crypto jack > -WANTLIB += m opus protobuf sndfile speex speexdsp ssl > +WANTLIB += Qt5Sql Qt5Svg Qt5Widgets Qt5Xml X11 Xi c crypto > +WANTLIB += m opus portaudio protobuf sndfile speex speexdsp ssl > > MODULES = devel/qmake x11/qt5 > SEPARATE_BUILD = No > @@ -26,7 +27,7 @@ BUILD_DEPENDS = audio/celt07 \ > > LIB_DEPENDS = audio/libsndfile>=1.0.25p0 \ > audio/opus \ > - audio/jack \ > + audio/portaudio-svn \ > audio/speex \ > devel/protobuf \ > x11/qt5/qtsvg > @@ -49,6 +50,7 @@ MODQMAKE_ARGS = MUMBLE_PREFIX=${PREFIX} > CONFIG+=no-crash-report \ > CONFIG+=no-embed-qt-translations \ > CONFIG+=no-g15 \ > + CONFIG+=no-jackaudio \ > CONFIG+=no-oss \ > CONFIG+=no-overlay \ > CONFIG+=no-pulseaudio \ > @@ -56,6 +58,7 @@ MODQMAKE_ARGS = MUMBLE_PREFIX=${PREFIX} > CONFIG+=no-speechd \ > CONFIG+=no-update \ > CONFIG+=packaged \ > + CONFIG+=portaudio \ > CONFIG+=release \ > DEFINES+="LOCALE_PATH=${PREFIX}/share/mumble/locale" \ > DEFINES+="PLUGIN_PATH=${PREFIX}/lib/mumble" > Index: patches/patch-src_mumble_AudioWizard_cpp > =================================================================== > RCS file: patches/patch-src_mumble_AudioWizard_cpp > diff -N patches/patch-src_mumble_AudioWizard_cpp > --- /dev/null 1 Jan 1970 00:00:00 -0000 > +++ patches/patch-src_mumble_AudioWizard_cpp 12 Mar 2020 07:21:18 -0000 > @@ -0,0 +1,25 @@ > +$OpenBSD: patch-src_mumble_AudioWizard_cpp,v 1.3 2019/08/05 17:42:40 sthen > Exp $ > + > +There's a convoluted threading issue: in PAAudio.cpp, around line 338, > +it will get caught in an infinite loop. It relies on the PortAudioInput > +object being destroyed in another thread, thereby setting bRunning to > +false and telling it to exit the loop, which will never happen. Luckily, > +this bug is only exposed by the AudioWizard configuration stuff. So, > +skip calling restartAudio() from on_qsOutputDelay_valueChanged() while > +the AudioWizard is starting up > + > +https://github.com/mumble-voip/mumble/issues/1138 > + > +Index: src/mumble/AudioWizard.cpp > +--- src/mumble/AudioWizard.cpp.orig > ++++ src/mumble/AudioWizard.cpp > +@@ -292,7 +292,8 @@ void AudioWizard::on_qcbOutputDevice_activated(int) { > + void AudioWizard::on_qsOutputDelay_valueChanged(int v) { > + qlOutputDelay->setText(tr("%1 ms").arg(v*10)); > + g.s.iOutputDelay = v; > +- restartAudio(); > ++ if (! bInit) > ++ restartAudio(); > + } > + > + void AudioWizard::on_qsMaxAmp_valueChanged(int v) { > -- jca | PGP : 0x1524E7EE / 5135 92C1 AD36 5293 2BDF DDCC 0DFA 74AE 1524 E7EE