Re: [PATCH] gatt: Fix double att_disconnected issue on disconnection

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

 



Hi Yunhan,
On Tue, Oct 30, 2018 at 5:02 PM Yunhan Wang <yunhanw@xxxxxxxxxx> wrote:
>
> Hi, Luiz
> On Tue, Oct 30, 2018 at 5:52 AM Luiz Augusto von Dentz
> <luiz.dentz@xxxxxxxxx> wrote:
> >
> > Hi Yunhan,
> >
> > On Tue, Oct 30, 2018 at 9:21 AM Yunhan Wang <yunhanw@xxxxxxxxxx> wrote:
> > >
> > > Hi, Luiz
> > >
> > > I am still seeing the bluetoothd crash when disconnect happens on this
> > > issue. Here I reproduce using btvirt and add characteristic with
> > > indicate in ble peripheral, put notify on for this characteristic in
> > > ble central
> > > crash is as below:
> > >
> > > #0  __memcmp_sse4_1 () at ../sysdeps/x86_64/multiarch/memcmp-sse4.S:943
> > > #1  0x00005555555cfd3a in bacmp (ba2=0x7fffffffdfe9, ba1=0xb) at
> > > bluez/repo/lib/bluetooth.h:317
> > > #2  device_addr_type_cmp (a=0x0, b=0x7fffffffdfe9) at
> > > /bluez/repo/src/device.c:4216
> > > #3  0x00007ffff7b2e3d1 in g_slist_find_custom () from
> > > /lib/x86_64-linux-gnu/libglib-2.0.so.0
> > > #4  0x00005555555bcf18 in btd_adapter_find_device (adapter=<optimized
> > > out>, dst=dst@entry=0x555555876038, bdaddr_type=<optimized out>)
> > >     at bluez/repo/src/adapter.c:845
> > > #5  0x00005555555ab89e in att_disconnected (err=<optimized out>,
> > > user_data=0x555555876030)
> > >     at bluez/repo/src/gatt-database.c:329
> > > #6  0x00005555555eabb8 in queue_foreach (queue=0x555555874460,
> > > function=function@entry=0x5555555ee600 <disconn_handler>,
> > > user_data=0x68)
> > >     at bluez/repo/src/shared/queue.c:220
> > > #7  0x00005555555ef829 in disconnect_cb (io=<optimized out>,
> > > user_data=0x5555558742a0)
> > >     at /bluez/repo/src/shared/att.c:592
> > > #8  0x00005555555f89b3 in watch_callback (channel=<optimized out>,
> > > cond=<optimized out>, user_data=<optimized out>)
> > >     at /bluez/repo/src/shared/io-glib.c:170
> > > #9  0x00007ffff7b0fe35 in g_main_context_dispatch () from
> > > /lib/x86_64-linux-gnu/libglib-2.0.so.0
> > > #10 0x00007ffff7b10200 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
> > > #11 0x00007ffff7b10512 in g_main_loop_run () from
> > > /lib/x86_64-linux-gnu/libglib-2.0.so.0
> > > #12 0x0000555555572238 in main (argc=<optimized out>, argv=<optimized
> > > out>) at /bluez/repo/src/main.c:808
> > >
> > > Peripheral:
> > >
> > > [bluetooth]# select 00:AA:01:01:00:24
> > > Controller 00:AA:01:01:00:24 N0001 [default]
> > > [bluetooth]# system-alias N0001
> > > Changing N0001 succeeded
> > > [bluetooth]# power on
> > > Changing power on succeeded
> > > [bluetooth]# name N0001
> > > [bluetooth]# uuids FEAF
> > > [bluetooth]# discoverable on
> >
> > Hmm, are you connecting over BR/EDR, normally you would need to
> > advertise in order to connect? I guess I haven't tried that, but at
> > least with LE Im pretty sure it doesn't crash anymore, it is worth
> > checking if it is not connecting on multiple bearers at the same time
> > though.
> >
> No, I am not connecting over BR/EDR, i am only using LE. I am
> consistently reproducing this issue using btvirt using the
> instructions here, the additional thing I have done is to add
> characteristic with indicate and notify on, without this additional
> setting, you will not see the crash.
>
> > > [bluetooth]# back
> > > [bluetooth]# register-service 0000feaf-0000-1000-8000-00805f9b34fb
> > > [NEW] Primary Service
> > > /org/bluez/app/service0x562f48a31860
> > > 0000feaf-0000-1000-8000-00805f9b34fb
> > > Nest Labs Inc.
> > > [/org/bluez/app/service0x562f48a31860] Primary (yes/no): yees
> > > Invalid option: yees
> > > [DEL] Primary Service
> > > /org/bluez/app/service0x562f48a31860
> > > 0000feaf-0000-1000-8000-00805f9b34fb
> > > Nest Labs Inc.
> > > [bluetooth]# register-service 0000feaf-0000-1000-8000-00805f9b34fb
> > > [NEW] Primary Service
> > > /org/bluez/app/service0x562f48a34e70
> > > 0000feaf-0000-1000-8000-00805f9b34fb
> > > Nest Labs Inc.
> > > [/org/bluez/app/service0x562f48a34e70] Primary (yes/no): yes
> > >
> > > [bluetooth]# register-characteristic
> > > 18ee2ef5-263d-4559-959f-4f9c429f9d11 read,indicate
> > > [NEW] Characteristic
> > > /org/bluez/app/service0x562f48a34e70/chrc0x562f48a437c0
> > > 18ee2ef5-263d-4559-959f-4f9c429f9d11
> > > Vendor specific
> > > [/org/bluez/app/service0x562f48a34e70/chrc0x562f48a437c0] Enter value: 1
> > >
> Indicate is here
>
> > > [bluetooth]# register-application
> > > [CHG] Controller 00:AA:01:01:00:24 UUIDs: 00001800-0000-1000-8000-00805f9b34fb
> > > [CHG] Controller 00:AA:01:01:00:24 UUIDs: 00001801-0000-1000-8000-00805f9b34fb
> > > [CHG] Controller 00:AA:01:01:00:24 UUIDs: 0000110e-0000-1000-8000-00805f9b34fb
> > > [CHG] Controller 00:AA:01:01:00:24 UUIDs: 00001200-0000-1000-8000-00805f9b34fb
> > > [CHG] Controller 00:AA:01:01:00:24 UUIDs: 0000110c-0000-1000-8000-00805f9b34fb
> > > [CHG] Controller 00:AA:01:01:00:24 UUIDs: 0000feaf-0000-1000-8000-00805f9b34fb
> > > Application registered
> > > [CHG] Controller 00:AA:01:01:00:24 UUIDs: 00001800-0000-1000-8000-00805f9b34fb
> > > [CHG] Controller 00:AA:01:01:00:24 UUIDs: 00001801-0000-1000-8000-00805f9b34fb
> > > [CHG] Controller 00:AA:01:01:00:24 UUIDs: 0000110e-0000-1000-8000-00805f9b34fb
> > > [CHG] Controller 00:AA:01:01:00:24 UUIDs: 00001200-0000-1000-8000-00805f9b34fb
> > > [CHG] Controller 00:AA:01:01:00:24 UUIDs: 0000110c-0000-1000-8000-00805f9b34fb
> > > [CHG] Controller 00:AA:01:01:00:24 UUIDs: 0000feaf-0000-1000-8000-00805f9b34fb
> > > [bluetooth]# back
> > >
> > > [bluetooth]# advertise peripheral
> > > [CHG] Controller 00:AA:01:01:00:24 SupportedInstances: 0x04
> > > [CHG] Controller 00:AA:01:01:00:24 ActiveInstances: 0x01
> > > Advertising object registered
> advertise peripheral is here
>
> > > UUID: (FEAF)
> > > Tx Power: off
> > > LocalName: N0001
> > > Apperance: off
> > > Discoverable: on
> > > [CHG] Controller 00:AA:01:00:00:23 Powered: yes
> > > [CHG] Controller 00:AA:01:00:00:23 Discovering: yes
> > > [CHG] Controller 00:AA:01:00:00:23 Discovering: no
> > > [CHG] Controller 00:AA:01:00:00:23 Discovering: yes
> > > [CHG] Device 00:AA:01:00:00:23 Connected: yes
> > > [NEW] Primary Service
> > > /org/bluez/hci2/dev_00_AA_01_00_00_23/service0006
> > > 00001801-0000-1000-8000-00805f9b34fb
> > > Generic Attribute Profile
> > > [NEW] Characteristic
> > > /org/bluez/hci2/dev_00_AA_01_00_00_23/service0006/char0007
> > > 00002a05-0000-1000-8000-00805f9b34fb
> > > Service Changed
> > > [NEW] Descriptor
> > > /org/bluez/hci2/dev_00_AA_01_00_00_23/service0006/char0007/desc0009
> > > 00002902-0000-1000-8000-00805f9b34fb
> > > Client Characteristic Configuration
> > > [CHG] Device 00:AA:01:00:00:23 ServicesResolved: yes
> > >
> > >
> > > Central:
> > >
> > > [bluetooth]# select 00:AA:01:00:00:23
> > > Discovery stopped
> > > [bluetooth]# scan on
> > > Discovery started
> > > [CHG] Controller 00:AA:01:00:00:23 Discovering: yes
> > > [bluetooth]# connect 00:AA:01:01:00:24
> > > Attempting to connect to 00:AA:01:01:00:24
> > > [CHG] Device 00:AA:01:01:00:24 Connected: yes
> > > Connection successful
> > > [CHG] Device 00:AA:01:01:00:24 UUIDs: 00001800-0000-1000-8000-00805f9b34fb
> > > [CHG] Device 00:AA:01:01:00:24 UUIDs: 00001801-0000-1000-8000-00805f9b34fb
> > > [NEW] Primary Service
> > > /org/bluez/hci1/dev_00_AA_01_01_00_24/service0006
> > > 00001801-0000-1000-8000-00805f9b34fb
> > > Generic Attribute Profile
> > > [NEW] Characteristic
> > > /org/bluez/hci1/dev_00_AA_01_01_00_24/service0006/char0007
> > > 00002a05-0000-1000-8000-00805f9b34fb
> > > Service Changed
> > > [NEW] Descriptor
> > > /org/bluez/hci1/dev_00_AA_01_01_00_24/service0006/char0007/desc0009
> > > 00002902-0000-1000-8000-00805f9b34fb
> > > Client Characteristic Configuration
> > > [NEW] Primary Service
> > > /org/bluez/hci1/dev_00_AA_01_01_00_24/service000d
> > > 0000feaf-0000-1000-8000-00805f9b34fb
> > > Nest Labs Inc.
> > > [NEW] Characteristic
> > > /org/bluez/hci1/dev_00_AA_01_01_00_24/service000d/char000e
> > > 18ee2ef5-263d-4559-959f-4f9c429f9d11
> > > Vendor specific
> > > [CHG] Device 00:AA:01:01:00:24 UUIDs: 00001800-0000-1000-8000-00805f9b34fb
> > > [CHG] Device 00:AA:01:01:00:24 UUIDs: 00001801-0000-1000-8000-00805f9b34fb
> > > [CHG] Device 00:AA:01:01:00:24 UUIDs: 0000feaf-0000-1000-8000-00805f9b34fb
> > > [CHG] Device 00:AA:01:01:00:24 ServicesResolved: yes
> > >
> > > [N0001]# select-attribute 00002a05-0000-1000-8000-00805f9b34fb
> > > [CHG] Device 00:AA:01:01:00:24 RSSI: 127
> > > [CHG] Device 00:AA:01:01:00:24 AdvertisingFlags:
> > >   06                                               .
> > > [N0001:/service0006/char0007]# notify on
> > > [CHG] Attribute
> > > /org/bluez/hci1/dev_00_AA_01_01_00_24/service0006/char0007 Notifying:
> > > yes
> > > Notify started
> notify on is here
> > >
> > >
> > > [N0001]# disconnect 00:AA:01:01:00:24
> > > Attempting to disconnect from 00:AA:01:01:00:24
> > > [CHG] Device 00:AA:01:01:00:24 ServicesResolved: no
> > > Successful disconnected
> >
> > After this all I got was:
> >
> > bluetoothd[31908]: src/gatt-client.c:btd_gatt_client_disconnected()
> > Device disconnected. Cleaning up.
> > bluetoothd[31908]: src/device.c:att_disconnected_cb() Automatic
> > connection disabled
> > bluetoothd[31908]: src/gatt-database.c:btd_gatt_database_att_disconnected()
> > bluetoothd[31908]: src/gatt-database.c:att_disconnected()
> > bluetoothd[31908]: attrib/gattrib.c:g_attrib_unref() 0x99b3ba0: g_attrib_unref=0
> >
> Have you setup ‘indicate’ and ‘notify on ‘ in your steps?

Yep, Im adding exactly the same service and attribute connecting and
enabling indication here:

https://gist.github.com/Vudentz/8fe3d85a0df9b1dfaf829db6f3588ede

The only difference is that Im using real controllers so perhaps it is
only really reproducible with btvirt, but we should fix it either way.




-- 
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