mynewt-nimble icon indicating copy to clipboard operation
mynewt-nimble copied to clipboard

host: Reset GAP server service/attribute counters on server reset

Open KKopyscinski opened this issue 3 years ago • 2 comments

When ble_gatts_reset is called, nothing resets ble_hs_max_services, ble_hs_max_attrs and ble_hs_max_client_configs to original values. That leads to increasingly large allocs at next time ble_gatts_count_cfg is called. Now, all mentioned variables are being reset on server reset, which results in allocs of same size each time.

KKopyscinski avatar Sep 06 '21 09:09 KKopyscinski

Illustrated behavior with btshell app - added logs at: - ble_att_svr_start: BLE_HS_LOG(INFO, "ble_hs_max_attrs %d\n", ble_hs_max_attrs);, line 2702 in ble_att_svr.c - ble_gatts_start: BLE_HS_LOG(INFO, "ble_hs_max_services: %d\n", ble_hs_max_services);, line 1207 in ble_gatts.c - ble_gatts_count_cfg: BLE_HS_LOG(INFO, "svcs: %d, attrs %d\n", res.svcs, res.attrs);, line 2122 in ble_gatts.c

  • Before patch
006433 [ts=50257796us, mod=4 level=1 ]GAP procedure initiated: stop advertising.
006435 host stopped
btshell> host-enable 
006853 [ts=53539028us, mod=4 level=1 ]svcs: 3, attrs 47
006854 [ts=53546840us, mod=4 level=1 ]svcs: 1, attrs 4
btshell> ble_hs_max_attrs 124
006856 [ts=53562464us, mod=4 level=1 ]ble_hs_max_services: 11
006858 [ts=53578088us, mod=0 level=0 ]registered service 00000001-8c26-476f-89a7-a108033a69c7 with handle=74
006860 [ts=53593712us, mod=0 level=0 ]registering characteristic 00000002-8c26-476f-89a7-a108033a69c7 with def_handle=75 val_handle=76
006864 [ts=53624960us, mod=0 level=0 ]registering characteristic 00000003-8c26-476f-89a7-a108033a69c7 with def_handle=77 val_handle=78
006867 [ts=53648396us, mod=0 level=0 ]registering characteristic 00000004-8c26-476f-89a7-a108033a69c7 with def_handle=79 val_handle=80
006870 [ts=53671832us, mod=0 level=0 ]registering characteristic 00000005-8c26-476f-89a7-a108033a69c7 with def_handle=81 val_handle=82
006873 [ts=53695268us, mod=0 level=0 ]registering characteristic 00000006-8c26-476f-89a7-a108033a69c7 with def_handle=83 val_handle=84
006877 [ts=53726516us, mod=0 level=0 ]registering characteristic 00000007-8c26-476f-89a7-a108033a69c7 with def_handle=85 val_handle=86
006880 [ts=53749952us, mod=0 level=0 ]registering characteristic 00000008-8c26-476f-89a7-a108033a69c7 with def_handle=87 val_handle=88
006883 [ts=53773388us, mod=0 level=0 ]registering descriptor 00000009-8c26-476f-89a7-a108033a69c7 with handle=89
006886 [ts=53796824us, mod=0 level=0 ]registering descriptor 0000000a-8c26-476f-89a7-a108033a69c7 with handle=90
006889 [ts=53820260us, mod=0 level=0 ]registering descriptor 0000000b-8c26-476f-89a7-a108033a69c7 with handle=91
006891 [ts=53835884us, mod=0 level=0 ]registering descriptor 0000000c-8c26-476f-89a7-a108033a69c7 with handle=92
006894 [ts=53859320us, mod=0 level=0 ]registering descriptor 0000000d-8c26-476f-89a7-a108033a69c7 with handle=93
006897 [ts=53882756us, mod=0 level=0 ]registered service 00000011-8c26-476f-89a7-a108033a69c7 with handle=94
006899 [ts=53898380us, mod=0 level=0 ]registering characteristic 00000012-8c26-476f-89a7-a108033a69c7 with def_handle=95 val_handle=96
006903 [ts=53929628us, mod=0 level=0 ]registering characteristic 00000013-8c26-476f-89a7-a108033a69c7 with def_handle=97 val_handle=98
006906 [ts=53953064us, mod=0 level=0 ]registering characteristic 00000014-8c26-476f-89a7-a108033a69c7 with def_handle=99 val_handle=100
006909 [ts=53976500us, mod=0 level=0 ]registering characteristic 00000015-8c26-476f-89a7-a108033a69c7 with def_handle=101 val_handle=102
006913 [ts=54007812us, mod=0 level=0 ]registering characteristic 00000016-8c26-476f-89a7-a108033a69c7 with def_handle=103 val_handle=104
006916 [ts=54031248us, mod=0 level=0 ]registering characteristic 00000017-8c26-476f-89a7-a108033a69c7 with def_handle=105 val_handle=106
006919 [ts=54054684us, mod=0 level=0 ]registering characteristic 00000018-8c26-476f-89a7-a108033a69c7 with def_handle=107 val_handle=108
006923 [ts=54085932us, mod=0 level=0 ]registering descriptor 00000019-8c26-476f-89a7-a108033a69c7 with handle=109
006925 [ts=54101556us, mod=0 level=0 ]registering descriptor 0000001a-8c26-476f-89a7-a108033a69c7 with handle=110
006928 [ts=54124992us, mod=0 level=0 ]registering descriptor 0000001b-8c26-476f-89a7-a108033a69c7 with handle=111
006931 [ts=54148428us, mod=0 level=0 ]registering descriptor 0000001c-8c26-476f-89a7-a108033a69c7 with handle=112
006934 [ts=54171864us, mod=0 level=0 ]registering descriptor 0000001d-8c26-476f-89a7-a108033a69c7 with handle=113
006936 [ts=54187488us, mod=0 level=0 ]registered service 59462f12-9543-9999-12c8-58b459a2712d with handle=114
006939 [ts=54210924us, mod=0 level=0 ]registering characteristic 5c3a659e-897e-45e1-b016-007107c96df6 with def_handle=115 val_handle=116
006942 [ts=54234360us, mod=0 level=0 ]registering characteristic 5c3a659e-897e-45e1-b016-007107c96df7 with def_handle=117 val_handle=118
006946 [ts=54265608us, mod=0 level=0 ]registering characteristic 5c3a659e-897e-45e1-b016-007107c96df8 with def_handle=119 val_handle=120
006949 [ts=54289044us, mod=0 level=0 ]registered service 0000001e-8c26-476f-89a7-a108033a69c7 with handle=121
006952 [ts=54312480us, mod=0 level=0 ]registering characteristic 0000001f-8c26-476f-89a7-a108033a69c7 with def_handle=123 val_handle=124
006955 [ts=54335916us, mod=4 level=0 ]looking up peer sec; 
006956 Host and controller synced

btshell> host-disable 
007518 [ts=58734328us, mod=4 level=1 ]GAP procedure initiated: stop advertising.
007520 host stopped
btshell> host-enable 
007864 [ts=61437472us, mod=4 level=1 ]svcs: 3, attrs 47
007865 [ts=61445284us, mod=4 level=1 ]svcs: 1, attrs 4
btshell> ble_hs_max_attrs 175
007867 [ts=61460908us, mod=4 level=1 ]ble_hs_max_services: 15
007869 [ts=61476532us, mod=0 level=0 ]registered service 00000001-8c26-476f-89a7-a108033a69c7 with handle=125
007871 [ts=61492156us, mod=0 level=0 ]registering characteristic 00000002-8c26-476f-89a7-a108033a69c7 with def_handle=126 val_handle=127
007875 [ts=61523404us, mod=0 level=0 ]registering characteristic 00000003-8c26-476f-89a7-a108033a69c7 with def_handle=128 val_handle=129
007878 [ts=61546840us, mod=0 level=0 ]registering characteristic 00000004-8c26-476f-89a7-a108033a69c7 with def_handle=130 val_handle=131
007881 [ts=61570276us, mod=0 level=0 ]registering characteristic 00000005-8c26-476f-89a7-a108033a69c7 with def_handle=132 val_handle=133
007885 [ts=61601524us, mod=0 level=0 ]registering characteristic 00000006-8c26-476f-89a7-a108033a69c7 with def_handle=134 val_handle=135
007888 [ts=61624960us, mod=0 level=0 ]registering characteristic 00000007-8c26-476f-89a7-a108033a69c7 with def_handle=136 val_handle=137
007891 [ts=61648396us, mod=0 level=0 ]registering characteristic 00000008-8c26-476f-89a7-a108033a69c7 with def_handle=138 val_handle=139
007895 [ts=61679644us, mod=0 level=0 ]registering descriptor 00000009-8c26-476f-89a7-a108033a69c7 with handle=140
007897 [ts=61695268us, mod=0 level=0 ]registering descriptor 0000000a-8c26-476f-89a7-a108033a69c7 with handle=141
007900 [ts=61718704us, mod=0 level=0 ]registering descriptor 0000000b-8c26-476f-89a7-a108033a69c7 with handle=142
007903 [ts=61742140us, mod=0 level=0 ]registering descriptor 0000000c-8c26-476f-89a7-a108033a69c7 with handle=143
007906 [ts=61765576us, mod=0 level=0 ]registering descriptor 0000000d-8c26-476f-89a7-a108033a69c7 with handle=144
007908 [ts=61781200us, mod=0 level=0 ]registered service 00000011-8c26-476f-89a7-a108033a69c7 with handle=145
007911 [ts=61804636us, mod=0 level=0 ]registering characteristic 00000012-8c26-476f-89a7-a108033a69c7 with def_handle=146 val_handle=147
007914 [ts=61828072us, mod=0 level=0 ]registering characteristic 00000013-8c26-476f-89a7-a108033a69c7 with def_handle=148 val_handle=149
007918 [ts=61859320us, mod=0 level=0 ]registering characteristic 00000014-8c26-476f-89a7-a108033a69c7 with def_handle=150 val_handle=151
007921 [ts=61882756us, mod=0 level=0 ]registering characteristic 00000015-8c26-476f-89a7-a108033a69c7 with def_handle=152 val_handle=153
007924 [ts=61906192us, mod=0 level=0 ]registering characteristic 00000016-8c26-476f-89a7-a108033a69c7 with def_handle=154 val_handle=155
007928 [ts=61937440us, mod=0 level=0 ]registering characteristic 00000017-8c26-476f-89a7-a108033a69c7 with def_handle=156 val_handle=157
007931 [ts=61960876us, mod=0 level=0 ]registering characteristic 00000018-8c26-476f-89a7-a108033a69c7 with def_handle=158 val_handle=159
007934 [ts=61984312us, mod=0 level=0 ]registering descriptor 00000019-8c26-476f-89a7-a108033a69c7 with handle=160
007937 [ts=62007812us, mod=0 level=0 ]registering descriptor 0000001a-8c26-476f-89a7-a108033a69c7 with handle=161
007940 [ts=62031248us, mod=0 level=0 ]registering descriptor 0000001b-8c26-476f-89a7-a108033a69c7 with handle=162
007942 [ts=62046872us, mod=0 level=0 ]registering descriptor 0000001c-8c26-476f-89a7-a108033a69c7 with handle=163
007945 [ts=62070308us, mod=0 level=0 ]registering descriptor 0000001d-8c26-476f-89a7-a108033a69c7 with handle=164
007948 [ts=62093744us, mod=0 level=0 ]registered service 59462f12-9543-9999-12c8-58b459a2712d with handle=165
007951 [ts=62117180us, mod=0 level=0 ]registering characteristic 5c3a659e-897e-45e1-b016-007107c96df6 with def_handle=166 val_handle=167
007954 [ts=62140616us, mod=0 level=0 ]registering characteristic 5c3a659e-897e-45e1-b016-007107c96df7 with def_handle=168 val_handle=169
007957 [ts=62164052us, mod=0 level=0 ]registering characteristic 5c3a659e-897e-45e1-b016-007107c96df8 with def_handle=170 val_handle=171
007961 [ts=62195300us, mod=0 level=0 ]registered service 0000001e-8c26-476f-89a7-a108033a69c7 with handle=172
007963 [ts=62210924us, mod=0 level=0 ]registering characteristic 0000001f-8c26-476f-89a7-a108033a69c7 with def_handle=174 val_handle=175
007967 [ts=62242172us, mod=4 level=0 ]looking up peer sec; 
007968 Host and controller synced
  • After patch
btshell> 
btshell> host-disable 
170560 [ts=1332499968us, mod=4 level=1 ]GAP procedure initiated: stop advertising.
170562 host stopped
btshell> host-enable 
170929 [ts=1335382788us, mod=4 level=1 ]svcs: 3, attrs 47
170930 [ts=1335390600us, mod=4 level=1 ]svcs: 1, attrs 4
btshell> ble_hs_max_attrs 56
170932 [ts=1335406224us, mod=4 level=1 ]ble_hs_max_services: 5
170934 [ts=1335421848us, mod=0 level=0 ]registered service 00000001-8c26-476f-89a7-a108033a69c7 with handle=431
170937 [ts=1335445284us, mod=0 level=0 ]registering characteristic 00000002-8c26-476f-89a7-a108033a69c7 with def_handle=432 val_handle=433
170940 [ts=1335468720us, mod=0 level=0 ]registering characteristic 00000003-8c26-476f-89a7-a108033a69c7 with def_handle=434 val_handle=435
170943 [ts=1335492156us, mod=0 level=0 ]registering characteristic 00000004-8c26-476f-89a7-a108033a69c7 with def_handle=436 val_handle=437
170947 [ts=1335523404us, mod=0 level=0 ]registering characteristic 00000005-8c26-476f-89a7-a108033a69c7 with def_handle=438 val_handle=439
170950 [ts=1335546840us, mod=0 level=0 ]registering characteristic 00000006-8c26-476f-89a7-a108033a69c7 with def_handle=440 val_handle=441
170953 [ts=1335570276us, mod=0 level=0 ]registering characteristic 00000007-8c26-476f-89a7-a108033a69c7 with def_handle=442 val_handle=443
170957 [ts=1335601524us, mod=0 level=0 ]registering characteristic 00000008-8c26-476f-89a7-a108033a69c7 with def_handle=444 val_handle=445
170960 [ts=1335624960us, mod=0 level=0 ]registering descriptor 00000009-8c26-476f-89a7-a108033a69c7 with handle=446
170963 [ts=1335648396us, mod=0 level=0 ]registering descriptor 0000000a-8c26-476f-89a7-a108033a69c7 with handle=447
170966 [ts=1335671832us, mod=0 level=0 ]registering descriptor 0000000b-8c26-476f-89a7-a108033a69c7 with handle=448
170968 [ts=1335687456us, mod=0 level=0 ]registering descriptor 0000000c-8c26-476f-89a7-a108033a69c7 with handle=449
170971 [ts=1335710892us, mod=0 level=0 ]registering descriptor 0000000d-8c26-476f-89a7-a108033a69c7 with handle=450
170974 [ts=1335734328us, mod=0 level=0 ]registered service 00000011-8c26-476f-89a7-a108033a69c7 with handle=451
170977 [ts=1335757764us, mod=0 level=0 ]registering characteristic 00000012-8c26-476f-89a7-a108033a69c7 with def_handle=452 val_handle=453
170980 [ts=1335781200us, mod=0 level=0 ]registering characteristic 00000013-8c26-476f-89a7-a108033a69c7 with def_handle=454 val_handle=455
170983 [ts=1335804636us, mod=0 level=0 ]registering characteristic 00000014-8c26-476f-89a7-a108033a69c7 with def_handle=456 val_handle=457
170987 [ts=1335835884us, mod=0 level=0 ]registering characteristic 00000015-8c26-476f-89a7-a108033a69c7 with def_handle=458 val_handle=459
170990 [ts=1335859320us, mod=0 level=0 ]registering characteristic 00000016-8c26-476f-89a7-a108033a69c7 with def_handle=460 val_handle=461
170993 [ts=1335882756us, mod=0 level=0 ]registering characteristic 00000017-8c26-476f-89a7-a108033a69c7 with def_handle=462 val_handle=463
170997 [ts=1335914004us, mod=0 level=0 ]registering characteristic 00000018-8c26-476f-89a7-a108033a69c7 with def_handle=464 val_handle=465
171000 [ts=1335937440us, mod=0 level=0 ]registering descriptor 00000019-8c26-476f-89a7-a108033a69c7 with handle=466
171003 [ts=1335960876us, mod=0 level=0 ]registering descriptor 0000001a-8c26-476f-89a7-a108033a69c7 with handle=467
171006 [ts=1335984312us, mod=0 level=0 ]registering descriptor 0000001b-8c26-476f-89a7-a108033a69c7 with handle=468
171008 [ts=1336000000us, mod=0 level=0 ]registering descriptor 0000001c-8c26-476f-89a7-a108033a69c7 with handle=469
171011 [ts=1336023436us, mod=0 level=0 ]registering descriptor 0000001d-8c26-476f-89a7-a108033a69c7 with handle=470
171014 [ts=1336046872us, mod=0 level=0 ]registered service 59462f12-9543-9999-12c8-58b459a2712d with handle=471
171017 [ts=1336070308us, mod=0 level=0 ]registering characteristic 5c3a659e-897e-45e1-b016-007107c96df6 with def_handle=472 val_handle=473
171020 [ts=1336093744us, mod=0 level=0 ]registering characteristic 5c3a659e-897e-45e1-b016-007107c96df7 with def_handle=474 val_handle=475
171023 [ts=1336117180us, mod=0 level=0 ]registering characteristic 5c3a659e-897e-45e1-b016-007107c96df8 with def_handle=476 val_handle=477
171027 [ts=1336148428us, mod=0 level=0 ]registered service 0000001e-8c26-476f-89a7-a108033a69c7 with handle=478
171029 [ts=1336164052us, mod=0 level=0 ]registering characteristic 0000001f-8c26-476f-89a7-a108033a69c7 with def_handle=480 val_handle=481
171033 [ts=1336195300us, mod=4 level=0 ]looking up peer sec; 
171034 Host and controller synced

btshell> host-disable 
171694 [ts=1341359352us, mod=4 level=1 ]GAP procedure initiated: stop advertising.
171696 host stopped
btshell> host-enable 
172173 [ts=1345101556us, mod=4 level=1 ]svcs: 3, attrs 47
172174 [ts=1345109368us, mod=4 level=1 ]svcs: 1, attrs 4
btshell> ble_hs_max_attrs 56
172176 [ts=1345124992us, mod=4 level=1 ]ble_hs_max_services: 5
172178 [ts=1345140616us, mod=0 level=0 ]registered service 00000001-8c26-476f-89a7-a108033a69c7 with handle=482
172181 [ts=1345164052us, mod=0 level=0 ]registering characteristic 00000002-8c26-476f-89a7-a108033a69c7 with def_handle=483 val_handle=484
172184 [ts=1345187488us, mod=0 level=0 ]registering characteristic 00000003-8c26-476f-89a7-a108033a69c7 with def_handle=485 val_handle=486
172187 [ts=1345210924us, mod=0 level=0 ]registering characteristic 00000004-8c26-476f-89a7-a108033a69c7 with def_handle=487 val_handle=488
172191 [ts=1345242172us, mod=0 level=0 ]registering characteristic 00000005-8c26-476f-89a7-a108033a69c7 with def_handle=489 val_handle=490
172194 [ts=1345265608us, mod=0 level=0 ]registering characteristic 00000006-8c26-476f-89a7-a108033a69c7 with def_handle=491 val_handle=492
172197 [ts=1345289044us, mod=0 level=0 ]registering characteristic 00000007-8c26-476f-89a7-a108033a69c7 with def_handle=493 val_handle=494
172201 [ts=1345320292us, mod=0 level=0 ]registering characteristic 00000008-8c26-476f-89a7-a108033a69c7 with def_handle=495 val_handle=496
172204 [ts=1345343728us, mod=0 level=0 ]registering descriptor 00000009-8c26-476f-89a7-a108033a69c7 with handle=497
172207 [ts=1345367164us, mod=0 level=0 ]registering descriptor 0000000a-8c26-476f-89a7-a108033a69c7 with handle=498
172210 [ts=1345390600us, mod=0 level=0 ]registering descriptor 0000000b-8c26-476f-89a7-a108033a69c7 with handle=499
172212 [ts=1345406224us, mod=0 level=0 ]registering descriptor 0000000c-8c26-476f-89a7-a108033a69c7 with handle=500
172215 [ts=1345429660us, mod=0 level=0 ]registering descriptor 0000000d-8c26-476f-89a7-a108033a69c7 with handle=501
172218 [ts=1345453096us, mod=0 level=0 ]registered service 00000011-8c26-476f-89a7-a108033a69c7 with handle=502
172221 [ts=1345476532us, mod=0 level=0 ]registering characteristic 00000012-8c26-476f-89a7-a108033a69c7 with def_handle=503 val_handle=504
172224 [ts=1345499968us, mod=0 level=0 ]registering characteristic 00000013-8c26-476f-89a7-a108033a69c7 with def_handle=505 val_handle=506
172227 [ts=1345523404us, mod=0 level=0 ]registering characteristic 00000014-8c26-476f-89a7-a108033a69c7 with def_handle=507 val_handle=508
172231 [ts=1345554652us, mod=0 level=0 ]registering characteristic 00000015-8c26-476f-89a7-a108033a69c7 with def_handle=509 val_handle=510
172234 [ts=1345578088us, mod=0 level=0 ]registering characteristic 00000016-8c26-476f-89a7-a108033a69c7 with def_handle=511 val_handle=512
172237 [ts=1345601524us, mod=0 level=0 ]registering characteristic 00000017-8c26-476f-89a7-a108033a69c7 with def_handle=513 val_handle=514
172241 [ts=1345632772us, mod=0 level=0 ]registering characteristic 00000018-8c26-476f-89a7-a108033a69c7 with def_handle=515 val_handle=516
172244 [ts=1345656208us, mod=0 level=0 ]registering descriptor 00000019-8c26-476f-89a7-a108033a69c7 with handle=517
172247 [ts=1345679644us, mod=0 level=0 ]registering descriptor 0000001a-8c26-476f-89a7-a108033a69c7 with handle=518
172249 [ts=1345695268us, mod=0 level=0 ]registering descriptor 0000001b-8c26-476f-89a7-a108033a69c7 with handle=519
172252 [ts=1345718704us, mod=0 level=0 ]registering descriptor 0000001c-8c26-476f-89a7-a108033a69c7 with handle=520
172255 [ts=1345742140us, mod=0 level=0 ]registering descriptor 0000001d-8c26-476f-89a7-a108033a69c7 with handle=521
172258 [ts=1345765576us, mod=0 level=0 ]registered service 59462f12-9543-9999-12c8-58b459a2712d with handle=522
172260 [ts=1345781200us, mod=0 level=0 ]registering characteristic 5c3a659e-897e-45e1-b016-007107c96df6 with def_handle=523 val_handle=524
172264 [ts=1345812448us, mod=0 level=0 ]registering characteristic 5c3a659e-897e-45e1-b016-007107c96df7 with def_handle=525 val_handle=526
172267 [ts=1345835884us, mod=0 level=0 ]registering characteristic 5c3a659e-897e-45e1-b016-007107c96df8 with def_handle=527 val_handle=528
172270 [ts=1345859320us, mod=0 level=0 ]registered service 0000001e-8c26-476f-89a7-a108033a69c7 with handle=529
172273 [ts=1345882756us, mod=0 level=0 ]registering characteristic 0000001f-8c26-476f-89a7-a108033a69c7 with def_handle=531 val_handle=532
172276 [ts=1345906192us, mod=4 level=0 ]looking up peer sec; 
172278 Host and controller synced

Note that initial values differ, because host (with server) is already started once.

KKopyscinski avatar Sep 06 '21 09:09 KKopyscinski

This solves https://github.com/apache/mynewt-nimble/issues/896

KKopyscinski avatar Sep 06 '21 09:09 KKopyscinski