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

simple_playback blocks (no sound) on Ubuntu 18.04 / pulseaudio. #57

Closed
fidergo-stephane-gourichon opened this issue Apr 7, 2019 · 14 comments
Labels

Comments

@fidergo-stephane-gourichon

Hi.

Context

Ubuntu 18.04 (actually Xubuntu, practically the same) with regular pulseaudio server (version 1:11.1-1ubuntu7.2), no specific tweak. gcc 7.3.0 .

Compile with

gcc -W -Wall -Wextra -g simple_playback.c -lpthread -lm -ldl -o simple_playback

I started with current https://github.com/dr-soft/miniaudio/tree/master a.k.a. e184644

Expected

Sound is heard.

Observed

No sound.
No output besides Press Enter to quit.... Then I added more output.

Additional information.

I have not noticed any other sound problem on the machine : applications work, audio, video, full duplex, everything. There's only an occasional sound corruption on pulseaudio output, solved with a pulseaudio -k and autospawn, but that seems unrelated.

Debug information

For comfort I fixed unrelated warnings and re-enabled the printf in the pulseaudio code. The exact code I now use is pushed to https://github.com/fidergo-stephane-gourichon/miniaudio/tree/test_on_ubuntu1804_pulseaudio

Here's a full output:

./simple_playback /usr/share/orage/sounds/Wall_c.wav

Using device: Audio interne Stéréo analogique
DECODER: 16-bit Signed Integer / 1 / 11025
DEVICE:  16-bit Signed Integer / 2 / 44100 / PulseAudio
Press Enter to quit...TRACE: Outer loop.
TRACE: Inner loop.
TRACE: Playback: pa_mainloop_iterate(). writableSizeInBytes=4228, periodSizeInBytes=5280

I also tried with a 44100Hz 2 channel WAV file, with flac file, same result.

I traced with gdb.
Execution blocks inside call to pa_mainloop_iterate:

int error = ((ma_pa_mainloop_iterate_proc)pDevice->pContext->pulse.pa_mainloop_iterate)((ma_pa_mainloop*)pDevice->pulse.pMainLoop, 1, NULL);

Here's a backtrace:

(gdb) bt
#0  ma_device_write__pulse (pDevice=0x7ffffffe6480, pPCMFrames=0x7fffe40adee0, frameCount=1024) at ../miniaudio.h:14677
#1  0x00005555555983c9 in ma_worker_thread (pData=0x7ffffffe6480) at ../miniaudio.h:22471
#2  0x00007ffff7bbd6db in start_thread (arg=0x7fffe40b0700) at pthread_create.c:463
#3  0x00007ffff734488f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

When stuck, I sometimes have a more complete backtrace:

#0  0x00007ffff7337cf6 in __GI_ppoll (fds=0x5555557d3ea0, nfds=3, timeout=<optimized out>, sigmask=0x0) at ../sysdeps/unix/sysv/linux/ppoll.c:39
#1  0x00007ffff6ff6ec1 in pa_mainloop_poll () from /usr/lib/x86_64-linux-gnu/libpulse.so
#2  0x00007ffff6ff74d0 in pa_mainloop_iterate () from /usr/lib/x86_64-linux-gnu/libpulse.so
#3  0x00005555555939f0 in ma_device_write__pulse (pDevice=0x7ffffffe6480, pPCMFrames=0x7fffe40adee0, frameCount=1024) at ../miniaudio.h:14677
#4  0x00005555555983c9 in ma_worker_thread (pData=0x7ffffffe6480) at ../miniaudio.h:22471
#5  0x00007ffff7bbd6db in start_thread (arg=0x7fffe40b0700) at pthread_create.c:463
#6  0x00007ffff734488f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

Also, here's the end of an strace output:

[pid 16582] write(1, "Press Enter to quit...", 22Press Enter to quit...) = 22
[pid 16582] read(0,  <unfinished ...>
[pid 16583] getpid()                    = 16582
[pid 16583] getpid()                    = 16582
[pid 16583] write(5, "W", 1)            = 1
[pid 16583] mmap(NULL, 134217728, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_NORESERVE, -1, 0) = 0x7fc52fa60000
[pid 16583] munmap(0x7fc52fa60000, 5898240) = 0
[pid 16583] munmap(0x7fc534000000, 61210624) = 0
[pid 16583] mprotect(0x7fc530000000, 135168, PROT_READ|PROT_WRITE) = 0
[pid 16583] write(5, "W", 1)            = 1
[pid 16583] read(4, "WW", 10)           = 2
[pid 16583] write(6, "\1\0\0\0\0\0\0\0", 8) = 8
[pid 16583] read(4, 0x7fc53825bbde, 10) = -1 EAGAIN (Resource temporarily unavailable)
[pid 16583] ppoll([{fd=4, events=POLLIN}, {fd=7, events=POLLIN}, {fd=8, events=POLLIN}], 3, {tv_sec=29, tv_nsec=999777000}, NULL, 8) = 1 ([{fd=8, revents=POLLIN}], left {tv_sec=29, tv_nsec=999694603})
[pid 16583] read(8, "\1\0\0\0\0\0\0\0", 8) = 8
[pid 16583] write(1, "TRACE: Outer loop.\n", 19TRACE: Outer loop.
) = 19
[pid 16583] write(1, "TRACE: Inner loop.\n", 19TRACE: Inner loop.
) = 19
[pid 16583] getpid()                    = 16582
[pid 16583] getpid()                    = 16582
[pid 16583] write(1, "TRACE: Playback: pa_mainloop_ite"..., 89TRACE: Playback: pa_mainloop_iterate(). writableSizeInBytes=4932, periodSizeInBytes=5280
) = 89
[pid 16583] read(4, 0x7fc53825bc8e, 10) = -1 EAGAIN (Resource temporarily unavailable)
[pid 16583] ppoll([{fd=4, events=POLLIN}, {fd=7, events=POLLIN}, {fd=8, events=POLLIN}], 3, NULL, NULL, 8

File descriptor 4 may the a communication pipe between threads as shown below.

stat --format="%N"  /proc/16582/fd/* /proc/16583/fd/*

'/proc/16582/fd/0' -> '/dev/pts/10'
'/proc/16582/fd/1' -> '/dev/pts/10'
'/proc/16582/fd/2' -> '/dev/pts/10'
'/proc/16582/fd/3' -> '/usr/share/orage/sounds/Wall_c.wav'
'/proc/16582/fd/4' -> 'pipe:[823676]'
'/proc/16582/fd/5' -> 'pipe:[823676]'
'/proc/16582/fd/6' -> 'anon_inode:[eventfd]'
'/proc/16582/fd/7' -> 'socket:[824606]'
'/proc/16582/fd/8' -> 'anon_inode:[eventfd]'
'/proc/16583/fd/0' -> '/dev/pts/10'
'/proc/16583/fd/1' -> '/dev/pts/10'
'/proc/16583/fd/2' -> '/dev/pts/10'
'/proc/16583/fd/3' -> '/usr/share/orage/sounds/Wall_c.wav'
'/proc/16583/fd/4' -> 'pipe:[823676]'
'/proc/16583/fd/5' -> 'pipe:[823676]'
'/proc/16583/fd/6' -> 'anon_inode:[eventfd]'
'/proc/16583/fd/7' -> 'socket:[824606]'
'/proc/16583/fd/8' -> 'anon_inode:[eventfd]'

$ grep -a . /proc/16582/cmdline /proc/16583/cmdline 

/proc/16582/cmdline:./simple_playback/usr/share/orage/sounds/Wall_c.wav
/proc/16583/cmdline:./simple_playback/usr/share/orage/sounds/Wall_c.wav

Can I do something more to help you figuring out what's wrong?

Thanks.

@fidergo-stephane-gourichon
Copy link
Author

Sample advanced_config cannot complete, outputs nothing.

Same cause inside:

#0  0x00007ffff7337cf6 in __GI_ppoll (fds=0x55555578f330, nfds=1, timeout=<optimized out>, sigmask=0x0) at ../sysdeps/unix/sysv/linux/ppoll.c:39
#1  0x00007ffff6ff6ec1 in pa_mainloop_poll () from /usr/lib/x86_64-linux-gnu/libpulse.so
#2  0x00007ffff6ff74d0 in pa_mainloop_iterate () from /usr/lib/x86_64-linux-gnu/libpulse.so
#3  0x000055555555c77e in ma_context_enumerate_devices__pulse (pContext=0x7ffffffe6130, callback=0x5555555646da <ma_context_get_devices__enum_callback>, pUserData=0x0) at ../miniaudio.h:13887
#4  0x0000555555564a04 in ma_context_get_devices (pContext=0x7ffffffe6130, ppPlaybackDeviceInfos=0x7ffffffe5ee0, pPlaybackDeviceCount=0x7ffffffe5ecc, ppCaptureDeviceInfos=0x7ffffffe5ee8, pCaptureDeviceCount=0x7ffffffe5ed0) at ../miniaudio.h:22942
#5  0x0000555555577f48 in main (argc=1, argv=0x7fffffffda48) at advanced_config.c:114
up
#1  0x00007ffff6ff6ec1 in pa_mainloop_poll () from /usr/lib/x86_64-linux-gnu/libpulse.so
(gdb) 
#2  0x00007ffff6ff74d0 in pa_mainloop_iterate () from /usr/lib/x86_64-linux-gnu/libpulse.so
(gdb) 
#3  0x000055555555c77e in ma_context_enumerate_devices__pulse (pContext=0x7ffffffe6130, callback=0x5555555646da <ma_context_get_devices__enum_callback>, pUserData=0x0) at ../miniaudio.h:13887
13887	        error = ((ma_pa_mainloop_iterate_proc)pContext->pulse.pa_mainloop_iterate)(pMainLoop, 1, NULL);
Breakpoint 3 at 0x55555555c760: file ../miniaudio.h, line 13887.

@mackron
Copy link
Owner

mackron commented Apr 7, 2019

Hmm, that's annoying... I will take a look at this as soon as I can. Can you try the ALSA backend by disabling PulseAudio (Put #define MA_NO_PULSEAUDIO above the #include "miniaudio.h" line) and let me know if that works?

Thanks for reporting this!

@fidergo-stephane-gourichon
Copy link
Author

fidergo-stephane-gourichon commented Apr 7, 2019

Thank you for your feedback.

Adding #define MA_NO_PULSEAUDIO at the top of simple_playback.c and advanced_config.c (same as removing ma_backend_pulseaudio in backends) allows both samples to use ALSA backend and have expected behavior (show list of devices, play sound).

@fidergo-stephane-gourichon
Copy link
Author

For convenience, I added a Makefile in branch https://github.com/fidergo-stephane-gourichon/miniaudio/tree/my_experiments see commit fidergo-stephane-gourichon@6c573fa

It might also be convenient for exact reproduction.

@mackron
Copy link
Owner

mackron commented Apr 7, 2019

I've pushed a potential fix to the dev branch. Relevant commit: 72b0e7b

To test, could you add #define MA_DEBUG_OUTPUT and show the me the output. It will dump a whole bunch of lines, but I only need to see the first few. If it works I'll bump the version and organise a new release.

The advance_config example will fail due to the server name not existing, but the deadlock should be gone now.

@fidergo-stephane-gourichon
Copy link
Author

Summary: better

I tested your current dev branch (60d6156 which contains 72b0e7b).

$ ./simple_playback /usr/share/orage/sounds/Wall_c.wav
Press Enter to quit...

Works! 👍

The advance_config example will fail due to the server name not existing, but the deadlock should be gone now.

Indeed.

$ ./advanced_config 

Playback Devices (0)

Capture Devices (0)
Failed to initialize playback device.

Other tests.

Also:

$ ./simple_enumeration 

Playback Devices
    0: Audio interne Stéréo analogique

Capture Devices
    0: Monitor of Audio interne Stéréo analogique
    1: Audio interne Stéréo analogique

And that one:

./simple_capture test_cap.wav
Press Enter to stop recording...

records relevant sound for only a very small time (about one fourth of a second).

It worked well with ALSA backend. That's probably another issue.

@fidergo-stephane-gourichon
Copy link
Author

Detailed output

$ git branch -v

* dev                            60d6156 Another potential deadlock fix for PulseAudio.

$ gcc -W -Wall -Wextra -g -DMA_DEBUG_OUTPUT=1 simple_playback.c -lpthread -lm -ldl -o simple_playback

(usual "fall through" warnings, -W or -Wextra are enough to cause them)

$ ./simple_playback /usr/share/orage/sounds/Wall_c.wav

[miniaudio] Endian:  LE
[miniaudio] SSE2:    YES
[miniaudio] AVX2:    NO
[miniaudio] AVX512F: NO
[miniaudio] NEON:    NO
[PulseAudio] Playback attr: maxlength=5280, tlength=1760, prebuf=-1, minreq=1760, fragsize=1760; internalBufferSizeInFrames=1320
[PulseAudio] Playback actual attr: maxlength=5280, tlength=5280, prebuf=3524, minreq=1760, fragsize=1760; internalBufferSizeInFrames=1320
[PulseAudio]
  Audio interne Stéréo analogique (Playback)
    Format:      16-bit Signed Integer -> 16-bit Signed Integer
    Channels:    1 -> 2
    Sample Rate: 11025 -> 44100
    Buffer Size: 1320/1 (1320)
    Conversion:
      Pre Format Conversion:    YES
      Post Format Conversion:   YES
      Channel Routing:          YES
      SRC:                      YES
      Channel Routing at Start: NO
      Passthrough:              NO
Press Enter to quit...TRACE: Data available: 5280
TRACE: Playback: pa_mainloop_iterate(). writableSizeInBytes=0, periodSizeInBytes=5280
TRACE: Playback: pa_mainloop_iterate(). writableSizeInBytes=0, periodSizeInBytes=5280
TRACE: Data available: 2564
TRACE: Playback: pa_mainloop_iterate(). writableSizeInBytes=0, periodSizeInBytes=5280
TRACE: Playback: pa_mainloop_iterate(). writableSizeInBytes=0, periodSizeInBytes=5280
TRACE: Data available: 2496
TRACE: Playback: pa_mainloop_iterate(). writableSizeInBytes=0, periodSizeInBytes=5280
TRACE: Playback: pa_mainloop_iterate(). writableSizeInBytes=0, periodSizeInBytes=5280
TRACE: Data available: 2752
TRACE: Playback: pa_mainloop_iterate(). writableSizeInBytes=0, periodSizeInBytes=5280
TRACE: Playback: pa_mainloop_iterate(). writableSizeInBytes=0, periodSizeInBytes=5280
TRACE: Data available: 2528
TRACE: Playback: pa_mainloop_iterate(). writableSizeInBytes=0, periodSizeInBytes=5280
TRACE: Playback: pa_mainloop_iterate(). writableSizeInBytes=0, periodSizeInBytes=5280
TRACE: Data available: 2752
TRACE: Playback: pa_mainloop_iterate(). writableSizeInBytes=0, periodSizeInBytes=5280
TRACE: Playback: pa_mainloop_iterate(). writableSizeInBytes=0, periodSizeInBytes=5280
TRACE: Data available: 2528
TRACE: Playback: pa_mainloop_iterate(). writableSizeInBytes=0, periodSizeInBytes=5280
TRACE: Playback: pa_mainloop_iterate(). writableSizeInBytes=0, periodSizeInBytes=5280
TRACE: Data available: 1888
TRACE: Playback: pa_mainloop_iterate(). writableSizeInBytes=0, periodSizeInBytes=5280
TRACE: Playback: pa_mainloop_iterate(). writableSizeInBytes=0, periodSizeInBytes=5280
TRACE: Data available: 2784

@fidergo-stephane-gourichon
Copy link
Author

Anyway, now it works.

writableSizeInBytes=0 always, as seen here:

TRACE: Playback: pa_mainloop_iterate(). writableSizeInBytes=0, periodSizeInBytes=5280
 ./simple_playback /usr/share/orage/sounds/Wall_c.wav 2>&1 | sort | uniq -c


      1       Channel Routing at Start: NO
      1       Channel Routing:          YES
      1       Passthrough:              NO
      1       Post Format Conversion:   YES
      1       Pre Format Conversion:    YES
      1       SRC:                      YES
      1     Buffer Size: 1320/1 (1320)
      1     Channels:    1 -> 2
      1     Conversion:
      1     Format:      16-bit Signed Integer -> 16-bit Signed Integer
      1     Sample Rate: 11025 -> 44100
      1   Audio interne Stéréo analogique (Playback)
      1 Press Enter to quit...TRACE: Data available: 5280
     24 TRACE: Data available: 1760
      1 TRACE: Data available: 1788
     15 TRACE: Data available: 1792
      2 TRACE: Data available: 1820
     21 TRACE: Data available: 1824
      1 TRACE: Data available: 1828
     18 TRACE: Data available: 1856
     30 TRACE: Data available: 1888
     18 TRACE: Data available: 1920
      2 TRACE: Data available: 1924
      1 TRACE: Data available: 1948
      9 TRACE: Data available: 1952
      6 TRACE: Data available: 1984
      4 TRACE: Data available: 2016
      2 TRACE: Data available: 2048
      1 TRACE: Data available: 2052
      1 TRACE: Data available: 2076
      2 TRACE: Data available: 2080
      8 TRACE: Data available: 2112
      1 TRACE: Data available: 2116
      1 TRACE: Data available: 2172
      1 TRACE: Data available: 2176
      1 TRACE: Data available: 2180
      1 TRACE: Data available: 2204
      1 TRACE: Data available: 2208
      1 TRACE: Data available: 2212
      1 TRACE: Data available: 2236
      1 TRACE: Data available: 2244
      1 TRACE: Data available: 2272
      1 TRACE: Data available: 2304
      1 TRACE: Data available: 2340
      2 TRACE: Data available: 2368
      5 TRACE: Data available: 2400
      1 TRACE: Data available: 2432
     14 TRACE: Data available: 2464
      2 TRACE: Data available: 2492
    109 TRACE: Data available: 2496
    125 TRACE: Data available: 2528
     24 TRACE: Data available: 2560
      1 TRACE: Data available: 2564
     19 TRACE: Data available: 2592
      1 TRACE: Data available: 2620
      8 TRACE: Data available: 2624
      3 TRACE: Data available: 2628
      2 TRACE: Data available: 2652
      5 TRACE: Data available: 2656
     13 TRACE: Data available: 2688
     27 TRACE: Data available: 2720
    137 TRACE: Data available: 2752
    115 TRACE: Data available: 2784
      1 TRACE: Data available: 2788
     14 TRACE: Data available: 2816
      1 TRACE: Data available: 2848
      5 TRACE: Data available: 2880
      2 TRACE: Data available: 2912
      1 TRACE: Data available: 2976
   1999 TRACE: Playback: pa_mainloop_iterate(). writableSizeInBytes=0, periodSizeInBytes=5280
      1 [PulseAudio]
      1 [PulseAudio] Playback actual attr: maxlength=5280, tlength=5280, prebuf=3524, minreq=1760, fragsize=1760; internalBufferSizeInFrames=1320
      1 [PulseAudio] Playback attr: maxlength=5280, tlength=1760, prebuf=-1, minreq=1760, fragsize=1760; internalBufferSizeInFrames=1320
      1 [miniaudio] AVX2:    NO
      1 [miniaudio] AVX512F: NO
      1 [miniaudio] Endian:  LE
      1 [miniaudio] NEON:    NO
      1 [miniaudio] SSE2:    YES

@mackron
Copy link
Owner

mackron commented Apr 7, 2019

Potential fix for the capture issue is in the dev branch.

@fidergo-stephane-gourichon
Copy link
Author

Tested 015c116, which includes b725388, same behavior, no improvement.

@mackron
Copy link
Owner

mackron commented Apr 7, 2019

Hmm, that's annoying. I've pushed another update with some debug output. Could you post the output of that?

One thing I've noticed (which I don't know how to fix just yet) is that it will deadlock when you try capturing without an actual microphone active. So for example, on my machine PulseAudio will have a generic input device even when no microphone is plugged in. In this case it deadlocks. When I plug in my actual microphone and use that as the capture device it will work like normal.

I will take a further look at this later to work around those deadlocks (I'm also getting a deadlock with ALSA in my no-microphone-plugged-in scenario above by the way).

@fidergo-stephane-gourichon
Copy link
Author

Summary: fixed in dea8309, correct behavior observed.

Just tested current dev, now it records sound correctly as long as needed.

Recorded sound files play correctly with simple_playback as well as with e.g. mplayer.

git branch -v

* dev                            dea8309 PulseAudio: Experimental fix for a deadlock with PulseAudio.



./simple_capture test_cap2.wav

[miniaudio] Endian:  LE
[miniaudio] SSE2:    YES
[miniaudio] AVX2:    NO
[miniaudio] AVX512F: NO
[miniaudio] NEON:    NO
[PulseAudio] Capture attr: maxlength=5280, tlength=1760, prebuf=-1, minreq=1760, fragsize=1760; internalBufferSizeInFrames=1320
[PulseAudio] Capture actual attr: maxlength=5280, tlength=1760, prebuf=-1, minreq=1760, fragsize=1760; internalBufferSizeInFrames=1320
[PulseAudio]
  Audio interne Stéréo analogique (Capture)
    Format:      32-bit IEEE Floating Point -> 16-bit Signed Integer
    Channels:    2 -> 2
    Sample Rate: 44100 -> 44100
    Buffer Size: 1320/3 (440)
    Conversion:
      Pre Format Conversion:    NO
      Post Format Conversion:   YES
      Channel Routing:          NO
      SRC:                      NO
      Channel Routing at Start: NO
      Passthrough:              NO
Press Enter to stop recording...
TRACE: Capture: pa_mainloop_iterate(). readableSizeInBytes=0
TRACE: Capture: pa_mainloop_iterate(). readableSizeInBytes=0
TRACE: Capture: pa_mainloop_iterate(). readableSizeInBytes=0
TRACE: Capture: pa_mainloop_iterate(). readableSizeInBytes=0
TRACE: Capture: pa_mainloop_iterate(). readableSizeInBytes=0
TRACE: Capture: pa_mainloop_iterate(). readableSizeInBytes=0
TRACE: Capture: pa_mainloop_iterate(). readableSizeInBytes=0
TRACE: Capture: pa_mainloop_iterate(). readableSizeInBytes=0
TRACE: Capture: pa_mainloop_iterate(). readableSizeInBytes=0
TRACE: Capture: pa_mainloop_iterate(). readableSizeInBytes=0
TRACE: Capture: pa_mainloop_iterate(). readableSizeInBytes=0
TRACE: Capture: pa_mainloop_iterate(). readableSizeInBytes=0
TRACE: Capture: pa_mainloop_iterate(). readableSizeInBytes=0
TRACE: Capture: pa_mainloop_iterate(). readableSizeInBytes=0
TRACE: Capture: pa_mainloop_iterate(). readableSizeInBytes=0
TRACE: Capture: pa_mainloop_iterate(). readableSizeInBytes=0
TRACE: Capture: pa_mainloop_iterate(). readableSizeInBytes=0
TRACE: Capture: pa_mainloop_iterate(). readableSizeInBytes=0
TRACE: Capture: pa_mainloop_iterate(). readableSizeInBytes=0
TRACE: Capture: pa_mainloop_iterate(). readableSizeInBytes=0
TRACE: Data available: bytesMapped=1760, readableSizeInBytes=3616.
TRACE: Data available: bytesMapped=1760, readableSizeInBytes=1856.
TRACE: Data available: bytesMapped=96, readableSizeInBytes=96.
TRACE: Capture: pa_mainloop_iterate(). readableSizeInBytes=0
TRACE: Capture: pa_mainloop_iterate(). readableSizeInBytes=0
TRACE: Capture: pa_mainloop_iterate(). readableSizeInBytes=0
TRACE: Capture: pa_mainloop_iterate(). readableSizeInBytes=0
TRACE: Capture: pa_mainloop_iterate(). readableSizeInBytes=0
TRACE: Capture: pa_mainloop_iterate(). readableSizeInBytes=0
TRACE: Capture: pa_mainloop_iterate(). readableSizeInBytes=0
TRACE: Capture: pa_mainloop_iterate(). readableSizeInBytes=0
TRACE: Capture: pa_mainloop_iterate(). readableSizeInBytes=0
TRACE: Capture: pa_mainloop_iterate(). readableSizeInBytes=0
TRACE: Capture: pa_mainloop_iterate(). readableSizeInBytes=0
TRACE: Capture: pa_mainloop_iterate(). readableSizeInBytes=0
TRACE: Capture: pa_mainloop_iterate(). readableSizeInBytes=0
TRACE: Capture: pa_mainloop_iterate(). readableSizeInBytes=0
TRACE: Capture: pa_mainloop_iterate(). readableSizeInBytes=0
TRACE: Capture: pa_mainloop_iterate(). readableSizeInBytes=0
TRACE: Capture: pa_mainloop_iterate(). readableSizeInBytes=0
TRACE: Capture: pa_mainloop_iterate(). readableSizeInBytes=0
TRACE: Capture: pa_mainloop_iterate(). readableSizeInBytes=0
TRACE: Capture: pa_mainloop_iterate(). readableSizeInBytes=0
TRACE: Data available: bytesMapped=1760, readableSizeInBytes=3456.
TRACE: Data available: bytesMapped=1696, readableSizeInBytes=1696.
TRACE: Capture: pa_mainloop_iterate(). readableSizeInBytes=0
TRACE: Capture: pa_mainloop_iterate(). readableSizeInBytes=0
TRACE: Capture: pa_mainloop_iterate(). readableSizeInBytes=0
TRACE: Capture: pa_mainloop_iterate(). readableSizeInBytes=0
TRACE: Capture: pa_mainloop_iterate(). readableSizeInBytes=0
TRACE: Capture: pa_mainloop_iterate(). readableSizeInBytes=0
TRACE: Capture: pa_mainloop_iterate(). readableSizeInBytes=0
TRACE: Capture: pa_mainloop_iterate(). readableSizeInBytes=0
TRACE: Capture: pa_mainloop_iterate(). readableSizeInBytes=0
TRACE: Capture: pa_mainloop_iterate(). readableSizeInBytes=0
TRACE: Capture: pa_mainloop_iterate(). readableSizeInBytes=0
TRACE: Capture: pa_mainloop_iterate(). readableSizeInBytes=0
TRACE: Capture: pa_mainloop_iterate(). readableSizeInBytes=0
TRACE: Capture: pa_mainloop_iterate(). readableSizeInBytes=0
TRACE: Capture: pa_mainloop_iterate(). readableSizeInBytes=0
TRACE: Capture: pa_mainloop_iterate(). readableSizeInBytes=0
TRACE: Capture: pa_mainloop_iterate(). readableSizeInBytes=0
TRACE: Capture: pa_mainloop_iterate(). readableSizeInBytes=0
TRACE: Capture: pa_mainloop_iterate(). readableSizeInBytes=0
TRACE: Capture: pa_mainloop_iterate(). readableSizeInBytes=0
TRACE: Data available: bytesMapped=1760, readableSizeInBytes=3488.
TRACE: Data available: bytesMapped=1728, readableSizeInBytes=1728.
TRACE: Capture: pa_mainloop_iterate(). readableSizeInBytes=0
TRACE: Capture: pa_mainloop_iterate(). readableSizeInBytes=0
TRACE: Capture: pa_mainloop_iterate(). readableSizeInBytes=0
TRACE: Capture: pa_mainloop_iterate(). readableSizeInBytes=0
TRACE: Capture: pa_mainloop_iterate(). readableSizeInBytes=0
TRACE: Capture: pa_mainloop_iterate(). readableSizeInBytes=0
TRACE: Capture: pa_mainloop_iterate(). readableSizeInBytes=0
TRACE: Capture: pa_mainloop_iterate(). readableSizeInBytes=0
TRACE: Capture: pa_mainloop_iterate(). readableSizeInBytes=0
TRACE: Capture: pa_mainloop_iterate(). readableSizeInBytes=0
TRACE: Capture: pa_mainloop_iterate(). readableSizeInBytes=0
TRACE: Capture: pa_mainloop_iterate(). readableSizeInBytes=0
TRACE: Capture: pa_mainloop_iterate(). readableSizeInBytes=0
TRACE: Capture: pa_mainloop_iterate(). readableSizeInBytes=0
TRACE: Capture: pa_mainloop_iterate(). readableSizeInBytes=0
TRACE: Capture: pa_mainloop_iterate(). readableSizeInBytes=0
TRACE: Capture: pa_mainloop_iterate(). readableSizeInBytes=0
TRACE: Capture: pa_mainloop_iterate(). readableSizeInBytes=0
TRACE: Capture: pa_mainloop_iterate(). readableSizeInBytes=0
TRACE: Capture: pa_mainloop_iterate(). readableSizeInBytes=0
TRACE: Data available: bytesMapped=1760, readableSizeInBytes=3616.
TRACE: Data available: bytesMapped=1760, readableSizeInBytes=1856.
TRACE: Data available: bytesMapped=96, readableSizeInBytes=96.
TRACE: Capture: pa_mainloop_iterate(). readableSizeInBytes=0
TRACE: Capture: pa_mainloop_iterate(). readableSizeInBytes=0
TRACE: Capture: pa_mainloop_iterate(). readableSizeInBytes=0

@mackron
Copy link
Owner

mackron commented Apr 7, 2019

Thanks for testing that. I will organize a release with these fixes soon.

@mackron
Copy link
Owner

mackron commented Apr 8, 2019

I've gone ahead and pushed these fixes to the master branch and bumped the version. Just as a side note, this particular part of the PulseAudio backend (among others) will be refactored soon so fingers crossed I don't accidentally reintroduce these bugs...

Thanks for reporting these issues!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

2 participants