Many thanks for the response, Steve. I had started to suspect that my email
had not reached the list.

Since then, I have captured a backtrace of the stuck thread when the
problem occurs.

#0  0x00007ffff4d140bf in __GI___poll (fds=fds@entry=0x7fff96ffc700,
nfds=nfds@entry=1, timeout=timeout@entry=-1) at
../sysdeps/unix/sysv/linux/poll.c:29
#1  0x00007fffd510101a in poll (__timeout=-1, __nfds=1,
__fds=0x7fff96ffc700, __fds=<optimized out>, __nfds=<optimized out>,
__timeout=<optimized out>) at /usr/include/bits/poll2.h:39
#2  snd1_pcm_wait_nocheck (pcm=pcm@entry=0x7fff84016d10,
timeout=timeout@entry=-1) at pcm/pcm.c:2900
#3  0x00007fffd5114f8a in ioplug_drain_via_poll (pcm=0x7fff84016d10) at
pcm/pcm_ioplug.c:525
#4  snd_pcm_ioplug_drain (pcm=0x7fff84016d10) at pcm/pcm_ioplug.c:568
#5  0x00007fffe803b56f in QAlsaAudioInput::suspend() (this=0x7fff84001b00)
at /usr/src/debug/qtmultimedia/src/plugins/alsa/qalsaaudioinput.cpp:702
#6  QAlsaAudioInput::suspend() (this=0x7fff84001b00) at
/usr/src/debug/qtmultimedia/src/plugins/alsa/qalsaaudioinput.cpp:699
#7  0x0000555555635774 in SoundInput::suspend() ()
#8  0x00007ffff58b0be0 in QObject::event(QEvent*) () at
/usr/lib/libQt5Core.so.5
...
#20 0x00007ffff56e42ea in  () at /usr/lib/libQt5Core.so.5
#21 0x00007ffff4c9f8fd in start_thread (arg=<optimized out>) at
pthread_create.c:442
#22 0x00007ffff4d21a60 in clone3 () at
../sysdeps/unix/sysv/linux/x86_64/clone3.S:81

I have also found that the issue can be reproduced using the simple Qt5
audio input example application from:
https://code.qt.io/cgit/qt/qtmultimedia.git/tree/examples/multimedia/audioinput?h=5.15

Using the example app, when I select the 'pulse' input device and toggle
the 'suspend' button a few times, the same problem occurs (backtrace
below), with the alsa-lib function 'snd_pcm_ioplug_drain' never returning.

#0  __snd_pcm_lock (pcm=0x555555bf55a0) at pcm/pcm_local.h:1199
#1  snd1_pcm_wait_nocheck (pcm=pcm@entry=0x555555bf55a0,
timeout=timeout@entry=-1) at pcm/pcm.c:2901
#2  0x00007fffea624f8a in ioplug_drain_via_poll (pcm=0x555555bf55a0) at
pcm/pcm_ioplug.c:525
#3  snd_pcm_ioplug_drain (pcm=0x555555bf55a0) at pcm/pcm_ioplug.c:568
#4  0x00007fffeaf4756f in QAlsaAudioInput::suspend() (this=0x7fffe4005920)
at /usr/src/debug/qtmultimedia/src/plugins/alsa/qalsaaudioinput.cpp:702
#5  QAlsaAudioInput::suspend() (this=0x7fffe4005920) at
/usr/src/debug/qtmultimedia/src/plugins/alsa/qalsaaudioinput.cpp:699

Therefore, the bug is almost certainly in Qt, alsa-lib, or pulseaudio, and
I shall submit a bug report in one of those places when I get the time.

Of course, using the stop/start methods rather than suspend/resume as in my
first email may still be a valid workaround for wsjtx, especially given
that we are presumably not interested in any input samples buffered at the
start of transmission or received during it.

I can also confirm that, running unmodified wsjtx again, I only experience
the problem when I have a pulseaudio source selected as the *input* device.
This makes total sense now, but it never occurred to me to test that in the
first place as the problem manifested as a failure of the output device.

On Mon, Dec 12, 2022 at 10:16 PM Steve Platt via wsjt-devel <
wsjt-devel@lists.sourceforge.net> wrote:

> On 08/12/2022 18:33, Ryan Suchocki via wsjt-devel wrote:
> > Hi,
> >
> > I'm having issues which resemble those described a couple of different
> > posts I've seen online. Specifically, no PulseAudio playback streams
> > appear when trying to transmit (either via 'tune' or otherwise) with
> > any of the available pulse/audio devices, no sound is produced, and
> > the process does not exit when all GUI windows are closed...
> >
> Hi Ryan,
>
> You have gone a lot deeper than I got but it seems to me that the
> latch-up (spinning thread) is only produced when both input *and* output
> devices are set to "pulse" ... it's almost like when the wrong
> permissions are requested when opening a file first time, so that the
> second open fails.
>
> This bug has been around and reported for a long time but no resolution
> is found.  I now have to specify exactly which device I want for at
> least one of the two device choices.as i before running wsjtx.
>
> Steve
>
>
> _______________________________________________
> wsjt-devel mailing list
> wsjt-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/wsjt-devel
>
_______________________________________________
wsjt-devel mailing list
wsjt-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/wsjt-devel

Reply via email to