mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2026-06-29 13:14:14 -04:00
When a single output port is linked to multiple input ports of the same client and the client uses multiple threads to process the input ports, get_buffer_output() is called from multiple threads concurrently and causes a race. Multiple threads will try to dequeue a buffer concurrently and set the HAVE_DATA io status, which causes the port to run out of buffers quickly and the io are to become corrupted. Use CAS to make sure only one thread dequeues and sets the io status. The other concurrent threads will spin until there is a buffer. The fast path will be that the buffer is already dequeued and then it is simply reused. Fixes #5324 |
||
|---|---|---|
| .. | ||
| examples | ||
| jack | ||
| src | ||
| meson.build | ||