Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix SessionManager::Shutdown to actually shut-down sessions #20487

Merged
merged 1 commit into from
Jul 8, 2022

Conversation

mrjerryjohns
Copy link
Contributor

SessionManager::Shutdown() wasn't actually shutting down any sessions that were resident in the session table.

This meant that they would only get torn down on program termination, which causes issues in the Python REPL since it results in Log prints being emitted after we've actually disconnected the logging subsystem. This has been a great way to actually catch objects that should be torn down as part of Shutdown, but weren't.

SessionManager::Shutdown() wasn't actually shutting down any sessions
that were resident in the session table.

This meant that they would only get torn down on program termination,
which causes issues in the Python REPL since it results in Log prints
being emitted well after we've actually disconnected the logging
subsystem.
@github-actions
Copy link

github-actions bot commented Jul 8, 2022

PR #20487: Size comparison from 8ebd7f0 to 2e07871

Increases above 0.2%:

platform target config section 8ebd7f0 2e07871 change % change
efr32 lighting-app BRD4161A+rpc (read/write) 151948 1135020 983072 647.0
Increases (29 builds for cc13x2_26x2, cyw30739, efr32, esp32, k32w, linux, nrfconnect, p6, telink)
platform target config section 8ebd7f0 2e07871 change % change
cc13x2_26x2 all-clusters-app LP_CC2652R7 (read only) 665651 665683 32 0.0
.text 577268 577300 32 0.0
all-clusters-minimal-app LP_CC2652R7 (read only) 631443 631475 32 0.0
.text 553812 553844 32 0.0
lock-ftd LP_CC2652R7 (read only) 668551 668583 32 0.0
.text 591864 591896 32 0.0
lock-mtd LP_CC2652R7 (read only) 617959 617991 32 0.0
.text 541384 541416 32 0.0
pump-app LP_CC2652R7 (read only) 677703 677735 32 0.0
.text 588788 588820 32 0.0
pump-controller-app LP_CC2652R7 (read only) 663527 663559 32 0.0
.text 578752 578784 32 0.0
shell LP_CC2652R7 (read only) 658150 658182 32 0.0
.text 572988 573020 32 0.0
cyw30739 light cyw930739m2evb_01 (read/write) 579134 579166 32 0.0
.app_xip_area 457904 457936 32 0.0
lock cyw930739m2evb_01 (read/write) 585070 585102 32 0.0
.app_xip_area 459104 459136 32 0.0
ota-requestor-no-progress-logging cyw930739m2evb_01 (read/write) 582206 582238 32 0.0
.app_xip_area 461824 461856 32 0.0
efr32 lighting-app BRD4161A (read/write) 1080652 1080684 32 0.0
.text 945588 945620 32 0.0
BRD4161A+rpc (read/write) 151948 1135020 983072 647.0
.text 983032 983064 32 0.0
BRD4161A+rs911x (read/write) 946756 946772 16 0.0
.text 803920 803936 16 0.0
lock-app BRD4161A+wf200 (read/write) 1127960 1127992 32 0.0
.text 981692 981724 32 0.0
window-app BRD4161A (read/write) 1074436 1074468 32 0.0
.text 937868 937900 32 0.0
esp32 all-clusters-app c3devkit (read only) 1019474 1019510 36 0.0
.flash.text 1019474 1019510 36 0.0
m5stack (read only) 1073383 1073415 32 0.0
.flash.text 1067999 1068031 32 0.0
k32w light k32w061+release (read/write) 658192 658224 32 0.0
.text 580884 580916 32 0.0
lock k32w061+release (read/write) 684964 684996 32 0.0
.text 607180 607212 32 0.0
linux chip-tool-no-interactive-ipv6only arm64 (read only) 9989956 9990292 336 0.0
.text 7955268 7955604 336 0.0
thermostat-no-ble arm64 (read only) 2592644 2592980 336 0.0
.text 2187520 2187856 336 0.0
nrfconnect all-clusters-app nrf52840dk_nrf52840 (read/write) 1174479 1174527 48 0.0
text 810912 810948 36 0.0
all-clusters-minimal-app nrf52840dk_nrf52840 (read/write) 1154691 1154723 32 0.0
text 800356 800392 36 0.0
p6 all-clusters-app default (read/write) 2563896 2563928 32 0.0
.text 1522160 1522192 32 0.0
all-clusters-minimal-app default (read/write) 2508952 2508984 32 0.0
.text 1467216 1467248 32 0.0
light-app default (read/write) 2439240 2439272 32 0.0
.text 1397504 1397536 32 0.0
lock-app default (read/write) 2466496 2466528 32 0.0
.text 1424760 1424792 32 0.0
telink light-switch-app tlsr9518adk80d (read/write) 796636 796668 32 0.0
text 565130 565168 38 0.0
lighting-app tlsr9518adk80d (read/write) 816464 816504 40 0.0
text 581454 581492 38 0.0
Decreases (5 builds for cc13x2_26x2)
platform target config section 8ebd7f0 2e07871 change % change
cc13x2_26x2 all-clusters-app LP_CC2652R7 (read/write) 185572 185540 -32 -0.0
lock-ftd LP_CC2652R7 (read/write) 172816 172784 -32 -0.0
pump-app LP_CC2652R7 (read/write) 164512 164480 -32 -0.0
pump-controller-app LP_CC2652R7 (read/write) 178808 178776 -32 -0.0
shell LP_CC2652R7 (read/write) 188576 188544 -32 -0.0
Full report (30 builds for cc13x2_26x2, cyw30739, efr32, esp32, k32w, linux, mbed, nrfconnect, p6, telink)
platform target config section 8ebd7f0 2e07871 change % change
cc13x2_26x2 all-clusters-app LP_CC2652R7 (read only) 665651 665683 32 0.0
(read/write) 185572 185540 -32 -0.0
.bss 74116 74116 0 0.0
.data 3356 3356 0 0.0
.rodata 88067 88067 0 0.0
.text 577268 577300 32 0.0
all-clusters-minimal-app LP_CC2652R7 (read only) 631443 631475 32 0.0
(read/write) 157684 157684 0 0.0
.bss 73412 73412 0 0.0
.data 3356 3356 0 0.0
.rodata 77307 77307 0 0.0
.text 553812 553844 32 0.0
lock-ftd LP_CC2652R7 (read only) 668551 668583 32 0.0
(read/write) 172816 172784 -32 -0.0
.bss 71148 71148 0 0.0
.data 3280 3280 0 0.0
.rodata 76207 76207 0 0.0
.text 591864 591896 32 0.0
lock-mtd LP_CC2652R7 (read only) 617959 617991 32 0.0
(read/write) 144264 144264 0 0.0
.bss 66868 66868 0 0.0
.data 3280 3280 0 0.0
.rodata 76087 76087 0 0.0
.text 541384 541416 32 0.0
pump-app LP_CC2652R7 (read only) 677703 677735 32 0.0
(read/write) 164512 164480 -32 -0.0
.bss 71228 71228 0 0.0
.data 3280 3280 0 0.0
.rodata 88431 88431 0 0.0
.text 588788 588820 32 0.0
pump-controller-app LP_CC2652R7 (read only) 663527 663559 32 0.0
(read/write) 178808 178776 -32 -0.0
.bss 71348 71348 0 0.0
.data 3276 3276 0 0.0
.rodata 84295 84295 0 0.0
.text 578752 578784 32 0.0
shell LP_CC2652R7 (read only) 658150 658182 32 0.0
(read/write) 188576 188544 -32 -0.0
.bss 76420 76420 0 0.0
.data 3360 3360 0 0.0
.rodata 84846 84846 0 0.0
.text 572988 573020 32 0.0
cyw30739 light cyw930739m2evb_01 (read/write) 579134 579166 32 0.0
.app_xip_area 457904 457936 32 0.0
.bss 64184 64184 0 0.0
.data 716 716 0 0.0
.rodata 0 0 0 0.0
.text 112 112 0 0.0
lock cyw930739m2evb_01 (read/write) 585070 585102 32 0.0
.app_xip_area 459104 459136 32 0.0
.bss 68912 68912 0 0.0
.data 720 720 0 0.0
.rodata 0 0 0 0.0
.text 112 112 0 0.0
ota-requestor-no-progress-logging cyw930739m2evb_01 (read/write) 582206 582238 32 0.0
.app_xip_area 461824 461856 32 0.0
.bss 63392 63392 0 0.0
.data 660 660 0 0.0
.rodata 0 0 0 0.0
.text 112 112 0 0.0
efr32 lighting-app BRD4161A (read/write) 1080652 1080684 32 0.0
.bss 132996 132996 0 0.0
.data 2048 2048 0 0.0
.text 945588 945620 32 0.0
BRD4161A+rpc (read/write) 151948 1135020 983072 647.0
.bss 149676 149676 0 0.0
.data 2260 2260 0 0.0
.text 983032 983064 32 0.0
BRD4161A+rs911x (read/write) 946756 946772 16 0.0
.bss 140768 140768 0 0.0
.data 2048 2048 0 0.0
.text 803920 803936 16 0.0
lock-app BRD4161A+wf200 (read/write) 1127960 1127992 32 0.0
.bss 144184 144184 0 0.0
.data 2060 2060 0 0.0
.text 981692 981724 32 0.0
window-app BRD4161A (read/write) 1074436 1074468 32 0.0
.bss 134468 134468 0 0.0
.data 2076 2076 0 0.0
.text 937868 937900 32 0.0
esp32 all-clusters-app c3devkit (read only) 1019474 1019510 36 0.0
(read/write) 1485458 1485458 0 0.0
.dram0.bss 70080 70080 0 0.0
.dram0.data 14600 14600 0 0.0
.flash.rodata 215344 215344 0 0.0
.flash.text 1019474 1019510 36 0.0
.iram0.text 62902 62902 0 0.0
m5stack (read only) 1073383 1073415 32 0.0
(read/write) 487536 487536 0 0.0
.dram0.bss 75600 75600 0 0.0
.dram0.data 34144 34144 0 0.0
.flash.rodata 245796 245796 0 0.0
.flash.text 1067999 1068031 32 0.0
.iram0.text 123267 123267 0 0.0
k32w light k32w061+release (read/write) 658192 658224 32 0.0
.bss 69516 69516 0 0.0
.data 1992 1992 0 0.0
.text 580884 580916 32 0.0
lock k32w061+release (read/write) 684964 684996 32 0.0
.bss 69980 69980 0 0.0
.data 2004 2004 0 0.0
.text 607180 607212 32 0.0
linux chip-tool-no-interactive-ipv6only arm64 (read only) 9989956 9990292 336 0.0
(read/write) 683569 683569 0 0.0
.bss 42609 42609 0 0.0
.data 1152 1152 0 0.0
.data.rel.ro 622480 622480 0 0.0
.dynamic 528 528 0 0.0
.got 13512 13512 0 0.0
.init 24 24 0 0.0
.init_array 192 192 0 0.0
.rodata 476340 476340 0 0.0
.text 7955268 7955604 336 0.0
thermostat-no-ble arm64 (read only) 2592644 2592980 336 0.0
(read/write) 158289 158289 0 0.0
.bss 65249 65249 0 0.0
.data 1704 1704 0 0.0
.data.rel.ro 83240 83240 0 0.0
.dynamic 528 528 0 0.0
.got 5072 5072 0 0.0
.init 24 24 0 0.0
.init_array 400 400 0 0.0
.rodata 165348 165348 0 0.0
.text 2187520 2187856 336 0.0
mbed lock-app CY8CPROTO_062_4343W+release (read only) 6224 6224 0 0.0
(read/write) 2447488 2447488 0 0.0
.bss 213940 213940 0 0.0
.data 5872 5872 0 0.0
.text 1410132 1410132 0 0.0
nrfconnect all-clusters-app nrf52840dk_nrf52840 (read/write) 1174479 1174527 48 0.0
bss 142900 142900 0 0.0
rodata 141776 141776 0 0.0
text 810912 810948 36 0.0
all-clusters-minimal-app nrf52840dk_nrf52840 (read/write) 1154691 1154723 32 0.0
bss 142136 142136 0 0.0
rodata 133308 133308 0 0.0
text 800356 800392 36 0.0
p6 all-clusters-app default (read/write) 2563896 2563928 32 0.0
.bss 149120 149120 0 0.0
.data 2776 2776 0 0.0
.text 1522160 1522192 32 0.0
all-clusters-minimal-app default (read/write) 2508952 2508984 32 0.0
.bss 148400 148400 0 0.0
.data 2776 2776 0 0.0
.text 1467216 1467248 32 0.0
light-app default (read/write) 2439240 2439272 32 0.0
.bss 140456 140456 0 0.0
.data 2592 2592 0 0.0
.text 1397504 1397536 32 0.0
lock-app default (read/write) 2466496 2466528 32 0.0
.bss 140304 140304 0 0.0
.data 2600 2600 0 0.0
.text 1424760 1424792 32 0.0
telink light-switch-app tlsr9518adk80d (read/write) 796636 796668 32 0.0
bss 70576 70576 0 0.0
noinit 40416 40416 0 0.0
text 565130 565168 38 0.0
lighting-app tlsr9518adk80d (read/write) 816464 816504 40 0.0
bss 71420 71420 0 0.0
noinit 40416 40416 0 0.0
text 581454 581492 38 0.0

@mrjerryjohns mrjerryjohns merged commit f9a97b0 into project-chip:master Jul 8, 2022
bzbarsky-apple added a commit to bzbarsky-apple/connectedhomeip that referenced this pull request Jul 14, 2022
…ning window.

After project-chip#20487 if we shut down with a commissioning window open we end up in a
loop where the session manager shutdown marks the tentative PASE session for
eviction, we treat that as a commissioning error and start listening for PASE
again, creating a new session, etc.  With a heap pool this ends up happening to
work in that we keep evicting the new sessions until we hit the 20-attempt limit
and close the commissioning window.  With a non-heap pool, I sort of wonder what
happens, exactly.

The fix here is in two parts, with either part enough on its own to fix the
behavior described above:

1) Shut down the commissioning window manager earlier, before we shut down the
   session manager.  And correspondingly move its initialization during server
   init later.

2) Once session manager starts shutdown, refuse to create any new sessions.
bzbarsky-apple added a commit that referenced this pull request Jul 14, 2022
…ning window. (#20715)

* Fix session allocation loop when shutting down with an open commissioning window.

After #20487 if we shut down with a commissioning window open we end up in a
loop where the session manager shutdown marks the tentative PASE session for
eviction, we treat that as a commissioning error and start listening for PASE
again, creating a new session, etc.  With a heap pool this ends up happening to
work in that we keep evicting the new sessions until we hit the 20-attempt limit
and close the commissioning window.  With a non-heap pool, I sort of wonder what
happens, exactly.

The fix here is in two parts, with either part enough on its own to fix the
behavior described above:

1) Shut down the commissioning window manager earlier, before we shut down the
   session manager.  And correspondingly move its initialization during server
   init later.

2) Once session manager starts shutdown, refuse to create any new sessions.

* Fix unit tests.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants