Skip to content
Snippets Groups Projects
Commit 4bdf4c99 authored by Takashi Sakamoto's avatar Takashi Sakamoto Committed by Tanu Kaskinen
Browse files

alsa-mixer: avoid assertion at alsa-lib mixer API when element removal

PulseAudio v5.99 or later hits assertion at alsa-lib mixer API due to
wrong handling of removal event for mixer element.

pulseaudio: mixer.c:149: hctl_elem_event_handler: Assertion `bag_empty(bag)' failed.

The removal event is defined as '~0U', thus it's not distinguished from
the other type of event just by bitwise operator.

At the removal event, class implementator for mixer API should detach
mixer element from hcontrol element in callback handler since alsa-lib
has assertion to check the list of mixer elements for a hcontrol element
is empty or not after calling all of handlers. In detail, please refer to
MR to alsa-lib:

 * https://github.com/alsa-project/alsa-lib/pull/244

This commit fixes the above two issues. The issue can be regenerated by
`samples/ctl` Python 3 script of alsa-gobject.

 * https://github.com/alsa-project/alsa-gobject/

It adds some user-defined elements into sound card 0. When terminated by
SIGINT signal, it removes the elements. Then PulseAudio dies due to the
assertion.

Fixes: 1fd8848e ("alsa-util: Add functions for accessing mixer elements through mixer class")
Part-of: <!728>
parent ffd7a607
No related branches found
No related tags found
1 merge request!728alsa-mixer: avoid assertion at alsa-lib mixer API when element removal
Pipeline #623447 passed
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment