Re: [PATCH BlueZ v1 2/2] transport: Print owner information when it exit or release

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Pauli,

On Wed, Jan 17, 2024 at 5:23 PM Luiz Augusto von Dentz
<luiz.dentz@xxxxxxxxx> wrote:
>
> From: Luiz Augusto von Dentz <luiz.von.dentz@xxxxxxxxx>
>
> This prints the owner name when it exits/quits/crash or releases a
> transport.
> ---
> - Looks like there is a bug/race on codec switch it appears the likes of
>   pipewire attempts to call Release in the process which stops the
>   acquire/resume:
>
>   bluetoothd[1774429]: profiles/audio/transport.c:transport_set_state() State
>   changed /org/bluez/hci0/dev_94_DB_56_F7_F2_88/sep1/fd8: TRANSPORT_G
>   bluetoothd[1774429]: profiles/audio/transport.c:media_request_create()
>   Request created: method=Acquire id=50
>   bluetoothd[1774429]: profiles/audio/transport.c:media_owner_add() Owner
>   :1.133105 Request Acquire
>   bluetoothd[1774429]: profiles/audio/transport.c:media_transport_set_owner()
>   Transport /org/bluez/hci0/dev_94_DB_56_F7_F2_88/sep1/fd8 Owner :1.5
>   bluetoothd[1774429]: profiles/audio/transport.c:release() Owner :1.133105
>   bluetoothd[1774429]: profiles/audio/transport.c:media_owner_remove() Owner
>   :1.133105 Request Acquire

I wonder if we have a regression on BlueZ or PW for A2DP, since I
recall this used to work just fine while switching codecs back and
forth, but today it didn't work at all for me and I had to reconnect a
couple of times to get it working:

>pipewire --version
pipewire
Compiled with libpipewire 1.0.0
Linked with libpipewire 1.0.0

pw.node: (bluez_output.94_DB_56_F7_F2_88.1-70) running -> error
(Received error event)

>  profiles/audio/transport.c | 4 ++++
>  1 file changed, 4 insertions(+)
>
> diff --git a/profiles/audio/transport.c b/profiles/audio/transport.c
> index a4696154aba5..5395985b990f 100644
> --- a/profiles/audio/transport.c
> +++ b/profiles/audio/transport.c
> @@ -531,6 +531,8 @@ static void media_owner_exit(DBusConnection *connection, void *user_data)
>  {
>         struct media_owner *owner = user_data;
>
> +       DBG("Owner %s", owner->name);
> +
>         owner->watch = 0;
>
>         media_owner_remove(owner);
> @@ -742,6 +744,8 @@ static DBusMessage *release(DBusConnection *conn, DBusMessage *msg,
>         if (owner == NULL || g_strcmp0(owner->name, sender) != 0)
>                 return btd_error_not_authorized(msg);
>
> +       DBG("Owner %s", owner->name);
> +
>         if (owner->pending) {
>                 const char *member;
>
> --
> 2.43.0

It seems you PW calls Release after Acquire, not sure if it didn't
like our response to Acquire or something.

-- 
Luiz Augusto von Dentz





[Index of Archives]     [Bluez Devel]     [Linux Wireless Networking]     [Linux Wireless Personal Area Networking]     [Linux ATH6KL]     [Linux USB Devel]     [Linux Media Drivers]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Big List of Linux Books]

  Powered by Linux