[pulseaudio-discuss] [PATCH] bluez5-discover: Fix device hashmap free order

Alexander E. Patrakov patrakov at gmail.com
Wed Dec 3 03:55:15 PST 2014


03.12.2014 16:37, David Henningsson wrote:
> In case there are still devices in the hashmap when the module is
> unloaded, we need to free the hashmap before the devices, because
> the hashmap key points to the device's name instead of making a copy.
>
> Reported-by: Alexander Patrakov <patrakov at gmail.com>
> Signed-off-by: David Henningsson <david.henningsson at canonical.com>
> ---
>
> I haven't reproduced it here, because when I run under valgrind, starting
> a stream causes PA to be killed for spending to much time in RT.
>
> Alexander, does this fix the second valgrind issue?

I will try it when I return home.

As for the "spending too much time in RT" issue, the same workaround in 
/etc/pulse/default.pa may apply as we have discussed for dcaenc:

load-module module-udev-detect tsched_buffer_size=50000

If 50000 is still too much, lower that value further.

>
>   src/modules/bluetooth/module-bluez5-discover.c | 6 +++---
>   1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/src/modules/bluetooth/module-bluez5-discover.c b/src/modules/bluetooth/module-bluez5-discover.c
> index 570cdba..57ca987 100644
> --- a/src/modules/bluetooth/module-bluez5-discover.c
> +++ b/src/modules/bluetooth/module-bluez5-discover.c
> @@ -155,11 +155,11 @@ void pa__done(pa_module *m) {
>       if (u->device_connection_changed_slot)
>           pa_hook_slot_free(u->device_connection_changed_slot);
>
> -    if (u->discovery)
> -        pa_bluetooth_discovery_unref(u->discovery);
> -
>       if (u->loaded_device_paths)
>           pa_hashmap_free(u->loaded_device_paths);
>
> +    if (u->discovery)
> +        pa_bluetooth_discovery_unref(u->discovery);
> +
>       pa_xfree(u);
>   }
>


-- 
Alexander E. Patrakov


More information about the pulseaudio-discuss mailing list