pulse: fix race condition whith allowing recording early - #177
Conversation
9848420 to
73509e8
Compare
OpenQA test summaryComplete test suite and dependencies: https://openqa.qubes-os.org/tests/overview?distri=qubesos&version=4.3&build=2026080611-devel&flavor=pull-requests Test run included the following:
New failures, excluding unstableCompared to: https://openqa.qubes-os.org/tests/overview?distri=qubesos&version=4.3&build=2026050504-devel&flavor=update
Failed tests14 failures
Fixed failuresCompared to: https://openqa.qubes-os.org/tests/176874#dependencies 30 fixed
Unstable testsDetails
Performance TestsPerformance degradation:19 performance degradations
Remaining performance tests:92 tests
|
Listening on qubesdb events is set early, it's possible the request to
allow recording will come before pulseaudio context is fully set. That
may lead to errors like this:
Connection to qube established, connecting to PulseAudio daemon
rec pa_stream_new() failed: Invalid argument
Fix this by manipulating recording stream only after pulseaudio is fully
set (use u->rec_stdio_event as a proxy for that info). If it isn't, only
save requested state, context_state_callback() will later connect the
stream.
And also, fix error handling in connect_disconnect_rec_stream_locked() -
return early in case of error, quit() function only schedules
termination, but it does return.
Fixes QubesOS/qubes-issues#11038
QubesOS/qubes-issues#
1dadb6d to
95e379e
Compare
Listening on qubesdb events is set early, it's possible the request to
allow recording will come before pulseaudio context is fully set. That
may lead to errors like this:
Fix this by manipulating recording stream only after pulseaudio is fully
set (use u->rec_stdio_event as a proxy for that info). If it isn't, only
save requested state, context_state_callback() will later connect the
stream.
And also, fix error handling in connect_disconnect_rec_stream_locked() -
return early in case of error, quit() function only schedules
termination, but it does return.