Bug 50324 - Ошибки в сервисе bluetooth при получении файлов с телефона
Summary: Ошибки в сервисе bluetooth при получении файлов с телефона
Status: CLOSED NOTABUG
Alias: None
Product: Sisyphus
Classification: Development
Component: bluez (show other bugs)
Version: unstable
Hardware: x86_64 Linux
: P5 normal
Assignee: Yuri N. Sedunov
QA Contact: qa-sisyphus
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2024-05-11 16:37 MSK by Монастырский Илья
Modified: 2024-05-24 15:24 MSK (History)
5 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Монастырский Илья 2024-05-11 16:37:33 MSK
Workstation K 10.3 x86_64

Шаги воспроизведения:
1. Подключить телефон по bluetooth к ноутбуку
2. Выполнить передачу с телефона на ноутбук

Реальный результат:
Файл передается успешно. В сервисе bluetooth выводится ошибка:
scr/profile.c:ext_io_disconnected() Unable to get io data for Object Push:getpeername: Transport endpoint is not connected (107)

Ожидаемый результат:
Успешная передача файла. Ошибки отсутствуют
Comment 1 Монастырский Илья 2024-05-11 16:42:28 MSK
Ошибка также воспроизводится на ноутбуке Honor MagicBook X 16 Pro
Comment 2 Konstantin A Lepikhov (L.A. Kostis) 2024-05-19 13:14:17 MSK
(In reply to Монастырский Илья from comment #1)
> Ошибка также воспроизводится на ноутбуке Honor MagicBook X 16 Pro

У меня нет такого ноутбука и p10 поэтому не очень понимаю, почему багу перевесили на меня.
Comment 3 Vera Blagoveschenskaya 2024-05-21 17:42:31 MSK
@zerg, кто будет исправлять в таком случае?
Comment 4 Sergey V Turchin 2024-05-23 12:27:59 MSK
На Сизифе воспроизводится?
Comment 5 Монастырский Илья 2024-05-23 16:41:02 MSK
Версия пакета: 
bluez-5.75-alt1

Стенд:
Workstation K 10.3 x86_64 (Обновлён до Sisyphus)

Ошибка воспроизводится

Ошибка также воспроизводится на всех тестовых ноутбуках
Comment 6 Konstantin A Lepikhov (L.A. Kostis) 2024-05-24 14:18:20 MSK
(In reply to Монастырский Илья from comment #0)
> Workstation K 10.3 x86_64
> 
> Шаги воспроизведения:
> 1. Подключить телефон по bluetooth к ноутбуку
> 2. Выполнить передачу с телефона на ноутбук
> 
> Реальный результат:
> Файл передается успешно. В сервисе bluetooth выводится ошибка:
> scr/profile.c:ext_io_disconnected() Unable to get io data for Object
> Push:getpeername: Transport endpoint is not connected (107)
> 
> Ожидаемый результат:
> Успешная передача файла. Ошибки отсутствуют

Если посмотреть код bluez в этом месте то это поведение там уже почти как 5 лет:

commit 39b9e120eb6e85f18e67679b4c3fe2823ba4c92d
Author: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
Date:   Tue Jul 7 13:31:44 2015 +0300

    core/profiles: Fix not handling disconnections properly
    
    If a profiles disconnects while in connecting state but ext_connect has
    already been called the state is never updated since ext_io_disconnected
    always calls btd_service_disconnecting_complete.

diff --git a/src/profile.c b/src/profile.c
index 4e68afc2a..4b7302630 100644
--- a/src/profile.c
+++ b/src/profile.c
@@ -797,8 +797,13 @@ static gboolean ext_io_disconnected(GIOChannel *io, GIOCondition cond,
 
        DBG("%s disconnected from %s", ext->name, addr);
 drop:
-       if (conn->service)
-               btd_service_disconnecting_complete(conn->service, 0);
+       if (conn->service) {
+               if (btd_service_get_state(conn->service) ==
+                                               BTD_SERVICE_STATE_CONNECTING)
+                       btd_service_connecting_complete(conn->service, -EIO);
+               else
+                       btd_service_disconnecting_complete(conn->service, 0);
+       }
 
        ext->conns = g_slist_remove(ext->conns, conn);
        ext_io_destroy(conn);

Я проверил это поведение на своей конфигурации (gnome 46 + bluez-5.75-alt1 и ядро 6.6.30) в логах такое же сообщение, но на работу по передаче файлов в gnome это никак не влияет:

mei 24 12:38:49 lks.home dbus-daemon[1876]: [session uid=500 pid=1876] Activating via systemd: service name='org.bluez.obex' unit='dbus-org.bluez.obex.service' requested by ':1.95' (uid=500 pid=2893 comm="/usr/bin/gnome-control-center")
mei 24 12:38:49 lks.home systemd[1858]: Starting obex.service - Bluetooth OBEX service...
mei 24 12:38:49 lks.home obexd[3059]: OBEX daemon 5.75
mei 24 12:38:49 lks.home dbus-daemon[1876]: [session uid=500 pid=1876] Successfully activated service 'org.bluez.obex'
mei 24 12:38:49 lks.home systemd[1858]: Started obex.service - Bluetooth OBEX service.
...
mei 24 12:41:33 lks.home obexd[3059]: CONNECT(0x0), <unknown>(0xff)
mei 24 12:41:33 lks.home obexd[3059]: CONNECT(0x0), <unknown>(0x0)
mei 24 12:41:33 lks.home obexd[3059]: PUT(0x2), <unknown>(0xff)
mei 24 12:41:33 lks.home obexd[3059]: PUT(0x2), Continue(0x10)
mei 24 12:41:43 lks.home obexd[3059]: DISCONNECT(0x1), <unknown>(0xff)
mei 24 12:41:43 lks.home obexd[3059]: DISCONNECT(0x1), Success(0x20)
mei 24 12:41:43 lks.home obexd[3059]: disconnected: Transport got disconnected
mei 24 12:41:43 lks.home bluetoothd[3038]: src/profile.c:ext_io_disconnected() Unable to get io data for Object Push: getpeername: Transport endpoint is not connected (107)

Т.е. я скорее склонен считать, что это баг в kde обвязке над bluez.
Comment 7 Konstantin A Lepikhov (L.A. Kostis) 2024-05-24 14:19:11 MSK
(In reply to Konstantin A Lepikhov (L.A. Kostis) from comment #6)
> (In reply to Монастырский Илья from comment #0)
> > Workstation K 10.3 x86_64
> > 
> > Шаги воспроизведения:
> > 1. Подключить телефон по bluetooth к ноутбуку
> > 2. Выполнить передачу с телефона на ноутбук
> > 
> > Реальный результат:
> > Файл передается успешно. В сервисе bluetooth выводится ошибка:
> > scr/profile.c:ext_io_disconnected() Unable to get io data for Object
> > Push:getpeername: Transport endpoint is not connected (107)
> > 
> > Ожидаемый результат:
> > Успешная передача файла. Ошибки отсутствуют
> 
> Если посмотреть код bluez в этом месте то это поведение там уже почти как 5
> лет:
> 
> commit 39b9e120eb6e85f18e67679b4c3fe2823ba4c92d
> Author: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
> Date:   Tue Jul 7 13:31:44 2015 +0300
> 
>     core/profiles: Fix not handling disconnections properly
>     
>     If a profiles disconnects while in connecting state but ext_connect has
>     already been called the state is never updated since ext_io_disconnected
>     always calls btd_service_disconnecting_complete.
> 
> diff --git a/src/profile.c b/src/profile.c
> index 4e68afc2a..4b7302630 100644
> --- a/src/profile.c
> +++ b/src/profile.c
> @@ -797,8 +797,13 @@ static gboolean ext_io_disconnected(GIOChannel *io,
> GIOCondition cond,
>  
>         DBG("%s disconnected from %s", ext->name, addr);
>  drop:
> -       if (conn->service)
> -               btd_service_disconnecting_complete(conn->service, 0);
> +       if (conn->service) {
> +               if (btd_service_get_state(conn->service) ==
> +                                               BTD_SERVICE_STATE_CONNECTING)
> +                       btd_service_connecting_complete(conn->service, -EIO);
> +               else
> +                       btd_service_disconnecting_complete(conn->service, 0);
> +       }
>  
>         ext->conns = g_slist_remove(ext->conns, conn);
>         ext_io_destroy(conn);
> 
> Я проверил это поведение на своей конфигурации (gnome 46 + bluez-5.75-alt1 и
> ядро 6.6.30) в логах такое же сообщение, но на работу по передаче файлов в
> gnome это никак не влияет:
> 
> mei 24 12:38:49 lks.home dbus-daemon[1876]: [session uid=500 pid=1876]
> Activating via systemd: service name='org.bluez.obex'
> unit='dbus-org.bluez.obex.service' requested by ':1.95' (uid=500 pid=2893
> comm="/usr/bin/gnome-control-center")
> mei 24 12:38:49 lks.home systemd[1858]: Starting obex.service - Bluetooth
> OBEX service...
> mei 24 12:38:49 lks.home obexd[3059]: OBEX daemon 5.75
> mei 24 12:38:49 lks.home dbus-daemon[1876]: [session uid=500 pid=1876]
> Successfully activated service 'org.bluez.obex'
> mei 24 12:38:49 lks.home systemd[1858]: Started obex.service - Bluetooth
> OBEX service.
> ...
> mei 24 12:41:33 lks.home obexd[3059]: CONNECT(0x0), <unknown>(0xff)
> mei 24 12:41:33 lks.home obexd[3059]: CONNECT(0x0), <unknown>(0x0)
> mei 24 12:41:33 lks.home obexd[3059]: PUT(0x2), <unknown>(0xff)
> mei 24 12:41:33 lks.home obexd[3059]: PUT(0x2), Continue(0x10)
> mei 24 12:41:43 lks.home obexd[3059]: DISCONNECT(0x1), <unknown>(0xff)
> mei 24 12:41:43 lks.home obexd[3059]: DISCONNECT(0x1), Success(0x20)
> mei 24 12:41:43 lks.home obexd[3059]: disconnected: Transport got
> disconnected
> mei 24 12:41:43 lks.home bluetoothd[3038]:
> src/profile.c:ext_io_disconnected() Unable to get io data for Object Push:
> getpeername: Transport endpoint is not connected (107)
> 
> Т.е. я скорее склонен считать, что это баг в kde обвязке над bluez.

не почти а уже как 9 лет )
Comment 8 Sergey V Turchin 2024-05-24 14:27:28 MSK
(Ответ для Монастырский Илья на комментарий #0)
> Реальный результат:
> Файл передается успешно.
Значит, всё ок.
Comment 9 Sergey V Turchin 2024-05-24 14:57:25 MSK
(Ответ для Монастырский Илья на комментарий #0)
> В сервисе bluetooth выводится ошибка:
> scr/profile.c:ext_io_disconnected() Unable to get io data for Object
Ошибка или предупреждение?
Comment 10 Vera Blagoveschenskaya 2024-05-24 15:22:53 MSK
(Ответ для Konstantin A Lepikhov (L.A. Kostis) на комментарий #6)
> Т.е. я скорее склонен считать, что это баг в kde обвязке над bluez.
Comment 11 Sergey V Turchin 2024-05-24 15:24:24 MSK
(Ответ для Konstantin A Lepikhov (L.A. Kostis) на комментарий #6)
> (gnome 46 + bluez-5.75-alt1 и ядро 6.6.30)
> в логах такое же сообщение, но на работу по передаче файлов в
> gnome это никак не влияет:

> Т.е. я скорее склонен считать, что это баг в kde обвязке над bluez.
Нет. В KDE тоже всё ок.