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

Un-revert #22932 + Fix Python Storage lifetime #22963

Merged

Conversation

mrjerryjohns
Copy link
Contributor

@mrjerryjohns mrjerryjohns commented Sep 29, 2022

#22932 shuts down the fabric table as part of shutting down the stack. This entails interactions with the persistent storage layer to update some keys. In Python however, the storage layer has already been shutdown by the time we get to stack shutdown, causing a use-after-free.

Fix

Flip the order in which we shutdown the storage adapter relative to shutting down the rest of the stack.

Testing

CI should pass, since without this fix, it should fail always.

22932 shuts down the fabric table as part of shutting down the stack.
This entails interactions with the persistent storage layer
to update some keys. In Python however, the storage layer has already
been shutdown by the time we get to stack shutdown, causing a
use-after-free.

Flip the order in which we shutdown the storage adapter relative to
shutting down the rest of the stack.
@mrjerryjohns mrjerryjohns force-pushed the python/fix-storage-lifetime branch from 5575bf2 to e1f6903 Compare September 29, 2022 21:42
@github-actions
Copy link

github-actions bot commented Sep 29, 2022

PR #22963: Size comparison from 852c879 to e1f6903

Increases (6 builds for bl602, bl702, cc13x2_26x2, esp32, linux, telink)
platform target config section 852c879 e1f6903 change % change
bl602 lighting-app bl602 .text 1068426 1068428 2 0.0
bl702 lighting-app bl702 (read/write) 1188027 1188043 16 0.0
.debug_info 37899859 37899860 1 0.0
.text 956624 956626 2 0.0
cc13x2_26x2 lock-mtd LP_CC2652R7 (read only) 661963 661971 8 0.0
.text 558384 558392 8 0.0
esp32 all-clusters-app c3devkit (read only) 1222984 1222986 2 0.0
.flash.text 1222984 1222986 2 0.0
linux chip-tool-ipv6only arm64 (read only) 10422300 10422588 288 0.0
.rodata 517372 517404 32 0.0
.text 8250948 8251204 256 0.0
telink lighting-app tlsr9518adk80d text 592846 592848 2 0.0
Decreases (8 builds for bl702, cc13x2_26x2, nrfconnect, psoc6, telink)
platform target config section 852c879 e1f6903 change % change
bl702 lighting-app bl702+rpc .debug_info 41806469 41806468 -1 -0.0
.text 1030326 1030324 -2 -0.0
cc13x2_26x2 lock-mtd LP_CC2652R7 (read/write) 182428 182420 -8 -0.0
nrfconnect all-clusters-minimal-app nrf52840dk_nrf52840 text 803248 803244 -4 -0.0
psoc6 all-clusters cy8ckit_062s2_43012 .debug_info 26821933 26821931 -2 -0.0
all-clusters-minimal cy8ckit_062s2_43012 .debug_info 26558714 26558713 -1 -0.0
light cy8ckit_062s2_43012 .debug_info 22022895 22022894 -1 -0.0
lock cy8ckit_062s2_43012 .debug_info 22402262 22402261 -1 -0.0
telink ota-requestor-app tlsr9518adk80d text 599028 599026 -2 -0.0
Full report (37 builds for bl602, bl702, cc13x2_26x2, cyw30739, efr32, esp32, k32w, linux, mbed, nrfconnect, psoc6, qpg, telink)
platform target config section 852c879 e1f6903 change % change
bl602 lighting-app bl602 (read/write) 1388826 1388826 0 0.0
.bss 90729 90729 0 0.0
.data 9928 9928 0 0.0
.text 1068426 1068428 2 0.0
bl602+rpc (read/write) 1434038 1434038 0 0.0
.bss 98161 98161 0 0.0
.data 10312 10312 0 0.0
.text 1099774 1099774 0 0.0
bl702 lighting-app bl702 (read only) 3262 3262 0 0.0
(read/write) 1188027 1188043 16 0.0
.bleromro 6296 6296 0 0.0
.bleromrw 124 124 0 0.0
.boot2 688 688 0 0.0
.bss 67094 67094 0 0.0
.bss_psram 29696 29696 0 0.0
.comment 48 48 0 0.0
.data 4272 4272 0 0.0
.debug_abbrev 1506903 1506903 0 0.0
.debug_aranges 133080 133080 0 0.0
.debug_frame 486388 486388 0 0.0
.debug_info 37899859 37899860 1 0.0
.debug_line 5252986 5252986 0 0.0
.debug_loc 3364624 3364624 0 0.0
.debug_ranges 359016 359016 0 0.0
.debug_str 3456120 3456120 0 0.0
.hbn 509 509 0 0.0
.hbn_noinit 260 260 0 0.0
.init 342 342 0 0.0
.init_array 144 144 0 0.0
.psram 0 0 0 0.0
.riscv.attributes 47 47 0 0.0
.rodata 116536 116536 0 0.0
.rsvd 3188 3188 0 0.0
.shstrtab 293 293 0 0.0
.stack 2048 2048 0 0.0
.strtab 564835 564835 0 0.0
.symtab 171584 171584 0 0.0
.tcm_data 36 36 0 0.0
.tcmcode 3262 3262 0 0.0
.text 0 0 0 0.0
956624 956626 2 0.0
bl702+rpc (read only) 3262 3262 0 0.0
(read/write) 1283963 1283963 0 0.0
.bleromro 6296 6296 0 0.0
.bleromrw 124 124 0 0.0
.boot2 688 688 0 0.0
.bss 75142 75142 0 0.0
.bss_psram 29936 29936 0 0.0
.comment 48 48 0 0.0
.data 4800 4800 0 0.0
.debug_abbrev 1644448 1644448 0 0.0
.debug_aranges 140584 140584 0 0.0
.debug_frame 511764 511764 0 0.0
.debug_info 41806469 41806468 -1 -0.0
.debug_line 5627521 5627521 0 0.0
.debug_loc 3557369 3557369 0 0.0
.debug_ranges 381472 381472 0 0.0
.debug_str 3852020 3852020 0 0.0
.hbn 509 509 0 0.0
.hbn_noinit 260 260 0 0.0
.init 342 342 0 0.0
.init_array 160 160 0 0.0
.psram 0 0 0 0.0
.riscv.attributes 47 47 0 0.0
.rodata 129928 129928 0 0.0
.rsvd 3188 3188 0 0.0
.shstrtab 293 293 0 0.0
.stack 2048 2048 0 0.0
.strtab 624008 624008 0 0.0
.symtab 189392 189392 0 0.0
.tcm_data 36 36 0 0.0
.tcmcode 3262 3262 0 0.0
.text 0 0 0 0.0
1030326 1030324 -2 -0.0
cc13x2_26x2 all-clusters-app LP_CC2652R7 (read only) 676555 676555 0 0.0
(read/write) 174980 174980 0 0.0
.bss 81228 81228 0 0.0
.data 3380 3380 0 0.0
.rodata 89547 89547 0 0.0
.text 586696 586696 0 0.0
all-clusters-minimal-app LP_CC2652R7 (read only) 640803 640803 0 0.0
(read/write) 157996 157996 0 0.0
.bss 80500 80500 0 0.0
.data 3380 3380 0 0.0
.rodata 78683 78683 0 0.0
.text 561800 561800 0 0.0
lock-ftd LP_CC2652R7 (read only) 678079 678079 0 0.0
(read/write) 170624 170624 0 0.0
.bss 78484 78484 0 0.0
.data 3304 3304 0 0.0
.rodata 77231 77231 0 0.0
.text 600368 600368 0 0.0
lock-mtd LP_CC2652R7 (read only) 661963 661971 8 0.0
(read/write) 182428 182420 -8 -0.0
.bss 74172 74172 0 0.0
.data 3304 3304 0 0.0
.rodata 103099 103099 0 0.0
.text 558384 558392 8 0.0
pump-app LP_CC2652R7 (read only) 687403 687403 0 0.0
(read/write) 162004 162004 0 0.0
.bss 78420 78420 0 0.0
.data 3296 3296 0 0.0
.rodata 90531 90531 0 0.0
.text 596388 596388 0 0.0
pump-controller-app LP_CC2652R7 (read only) 671903 671903 0 0.0
(read/write) 177616 177616 0 0.0
.bss 78532 78532 0 0.0
.data 3292 3292 0 0.0
.rodata 86087 86087 0 0.0
.text 585336 585336 0 0.0
shell LP_CC2652R7 (read only) 667606 667606 0 0.0
(read/write) 186240 186240 0 0.0
.bss 83540 83540 0 0.0
.data 3376 3376 0 0.0
.rodata 86262 86262 0 0.0
.text 581028 581028 0 0.0
cyw30739 light cyw930739m2evb_01 (read/write) 587354 587354 0 0.0
.app_xip_area 464012 464012 0 0.0
.bss 65776 65776 0 0.0
.data 744 744 0 0.0
.rodata 0 0 0 0.0
.text 112 112 0 0.0
lock cyw930739m2evb_01 (read/write) 594418 594418 0 0.0
.app_xip_area 465748 465748 0 0.0
.bss 71096 71096 0 0.0
.data 752 752 0 0.0
.rodata 0 0 0 0.0
.text 112 112 0 0.0
ota-requestor-no-progress-logging cyw930739m2evb_01 (read/write) 543346 543346 0 0.0
.app_xip_area 425028 425028 0 0.0
.bss 60784 60784 0 0.0
.data 716 716 0 0.0
.rodata 0 0 0 0.0
.text 112 112 0 0.0
efr32 lighting-app BRD4161A (read/write) 1110664 1110664 0 0.0
.bss 136532 136532 0 0.0
.data 2072 2072 0 0.0
.text 972040 972040 0 0.0
BRD4161A+rpc (read/write) 973804 973804 0 0.0
.bss 151044 151044 0 0.0
.data 2252 2252 0 0.0
.text 820488 820488 0 0.0
BRD4161A+rs911x (read/write) 1003936 1003936 0 0.0
.bss 169368 169368 0 0.0
.data 2064 2064 0 0.0
.text 832484 832484 0 0.0
lock-app BRD4161A+wf200 (read/write) 1151436 1151436 0 0.0
.bss 152248 152248 0 0.0
.data 2072 2072 0 0.0
.text 997096 997096 0 0.0
window-app BRD4161A (read/write) 1102672 1102672 0 0.0
.bss 137980 137980 0 0.0
.data 2096 2096 0 0.0
.text 962576 962576 0 0.0
esp32 all-clusters-app c3devkit (read only) 1222984 1222986 2 0.0
(read/write) 1788054 1788054 0 0.0
.dram0.bss 76944 76944 0 0.0
.dram0.data 13840 13840 0 0.0
.flash.rodata 257624 257624 0 0.0
.flash.text 1222984 1222986 2 0.0
.iram0.text 65204 65204 0 0.0
m5stack (read only) 1233067 1233067 0 0.0
(read/write) 563948 563948 0 0.0
.dram0.bss 82304 82304 0 0.0
.dram0.data 34296 34296 0 0.0
.flash.rodata 314680 314680 0 0.0
.flash.text 1227683 1227683 0 0.0
.iram0.text 123939 123939 0 0.0
k32w light k32w0+release (read/write) 649972 649972 0 0.0
.bss 70712 70712 0 0.0
.data 2068 2068 0 0.0
.text 574464 574464 0 0.0
lock k32w0+release (read/write) 706912 706912 0 0.0
.bss 71160 71160 0 0.0
.data 2076 2076 0 0.0
.text 630948 630948 0 0.0
linux chip-tool-ipv6only arm64 (read only) 10422300 10422588 288 0.0
(read/write) 706257 706257 0 0.0
.bss 33953 33953 0 0.0
.data 2864 2864 0 0.0
.data.rel.ro 650560 650560 0 0.0
.dynamic 560 560 0 0.0
.got 13904 13904 0 0.0
.init 24 24 0 0.0
.init_array 208 208 0 0.0
.rodata 517372 517404 32 0.0
.text 8250948 8251204 256 0.0
thermostat-no-ble arm64 (read only) 2387508 2387508 0 0.0
(read/write) 143649 143649 0 0.0
.bss 55361 55361 0 0.0
.data 1912 1912 0 0.0
.data.rel.ro 77208 77208 0 0.0
.dynamic 560 560 0 0.0
.got 5184 5184 0 0.0
.init 24 24 0 0.0
.init_array 440 440 0 0.0
.rodata 143644 143644 0 0.0
.text 2001568 2001568 0 0.0
mbed lock-app CY8CPROTO_062_4343W+release (read only) 6224 6224 0 0.0
(read/write) 2455712 2455712 0 0.0
.bss 215044 215044 0 0.0
.data 5872 5872 0 0.0
.text 1418356 1418356 0 0.0
nrfconnect all-clusters-app nrf52840dk_nrf52840 (read/write) 1182911 1182911 0 0.0
bss 144433 144433 0 0.0
rodata 144208 144208 0 0.0
text 815352 815352 0 0.0
all-clusters-minimal-app nrf52840dk_nrf52840 (read/write) 1161579 1161579 0 0.0
bss 143660 143660 0 0.0
rodata 135780 135780 0 0.0
text 803248 803244 -4 -0.0
psoc6 all-clusters cy8ckit_062s2_43012 (read only) 841968 841968 0 0.0
(read/write) 1744436 1744436 0 0.0
.ARM.attributes 46 46 0 0.0
.ARM.exidx 8 8 0 0.0
.bss 188712 188712 0 0.0
.comment 204 204 0 0.0
.copy.table 24 24 0 0.0
.cy_m0p_image 6216 6216 0 0.0
.cy_sharedmem 8 8 0 0.0
.data 2664 2664 0 0.0
.debug_abbrev 1229470 1229470 0 0.0
.debug_aranges 111816 111816 0 0.0
.debug_frame 373332 373332 0 0.0
.debug_info 26821933 26821931 -2 -0.0
.debug_line 3668940 3668940 0 0.0
.debug_loc 3583264 3583264 0 0.0
.debug_ranges 338840 338840 0 0.0
.debug_str 3439792 3439792 0 0.0
.heap 841968 841968 0 0.0
.noinit 148 148 0 0.0
.ramVectors 736 736 0 0.0
.shstrtab 288 288 0 0.0
.stab 156 156 0 0.0
.stabstr 335 335 0 0.0
.stack_dummy 4096 4096 0 0.0
.strtab 569480 569480 0 0.0
.symtab 421056 421056 0 0.0
.text 1544672 1544672 0 0.0
.zero.table 8 8 0 0.0
text 0 0 0 0.0
all-clusters-minimal cy8ckit_062s2_43012 (read only) 842704 842704 0 0.0
(read/write) 1687044 1687044 0 0.0
.ARM.attributes 46 46 0 0.0
.ARM.exidx 8 8 0 0.0
.bss 187976 187976 0 0.0
.comment 204 204 0 0.0
.copy.table 24 24 0 0.0
.cy_m0p_image 6216 6216 0 0.0
.cy_sharedmem 8 8 0 0.0
.data 2664 2664 0 0.0
.debug_abbrev 1221269 1221269 0 0.0
.debug_aranges 111288 111288 0 0.0
.debug_frame 376412 376412 0 0.0
.debug_info 26558714 26558713 -1 -0.0
.debug_line 3689656 3689656 0 0.0
.debug_loc 3570901 3570901 0 0.0
.debug_ranges 337456 337456 0 0.0
.debug_str 3428805 3428805 0 0.0
.heap 842704 842704 0 0.0
.noinit 148 148 0 0.0
.ramVectors 736 736 0 0.0
.shstrtab 288 288 0 0.0
.stab 156 156 0 0.0
.stabstr 335 335 0 0.0
.stack_dummy 4096 4096 0 0.0
.strtab 533569 533569 0 0.0
.symtab 407488 407488 0 0.0
.text 1488016 1488016 0 0.0
.zero.table 0 0 0 0.0
8 8 0 0.0
light cy8ckit_062s2_43012 (read only) 850896 850896 0 0.0
(read/write) 1605572 1605572 0 0.0
.ARM.attributes 46 46 0 0.0
.ARM.exidx 8 8 0 0.0
.bss 179992 179992 0 0.0
.comment 204 204 0 0.0
.copy.table 24 24 0 0.0
.cy_m0p_image 6216 6216 0 0.0
.cy_sharedmem 8 8 0 0.0
.data 2456 2456 0 0.0
.debug_abbrev 1055325 1055325 0 0.0
.debug_aranges 103496 103496 0 0.0
.debug_frame 346740 346740 0 0.0
.debug_info 22022895 22022894 -1 -0.0
.debug_line 3259572 3259572 0 0.0
.debug_loc 3268876 3268876 0 0.0
.debug_ranges 302784 302784 0 0.0
.debug_str 3234337 3234337 0 0.0
.heap 850896 850896 0 0.0
.noinit 148 148 0 0.0
.ramVectors 736 736 0 0.0
.shstrtab 288 288 0 0.0
.stab 156 156 0 0.0
.stabstr 335 335 0 0.0
.stack_dummy 4096 4096 0 0.0
.strtab 469946 469946 0 0.0
.symtab 375936 375936 0 0.0
.text 1414736 1414736 0 0.0
.zero.table 0 0 0 0.0
8 8 0 0.0
lock cy8ckit_062s2_43012 (read only) 845864 845864 0 0.0
(read/write) 1643436 1643436 0 0.0
.ARM.attributes 46 46 0 0.0
.ARM.exidx 8 8 0 0.0
.bss 185008 185008 0 0.0
.comment 204 204 0 0.0
.copy.table 24 24 0 0.0
.cy_m0p_image 6216 6216 0 0.0
.cy_sharedmem 8 8 0 0.0
.data 2472 2472 0 0.0
.debug_abbrev 1062744 1062744 0 0.0
.debug_aranges 104168 104168 0 0.0
.debug_frame 349564 349564 0 0.0
.debug_info 22402262 22402261 -1 -0.0
.debug_line 3268289 3268289 0 0.0
.debug_loc 3308765 3308765 0 0.0
.debug_ranges 306128 306128 0 0.0
.debug_str 3261792 3261792 0 0.0
.heap 845864 845864 0 0.0
.noinit 148 148 0 0.0
.ramVectors 736 736 0 0.0
.shstrtab 288 288 0 0.0
.stab 156 156 0 0.0
.stabstr 335 335 0 0.0
.stack_dummy 4096 4096 0 0.0
.strtab 476186 476186 0 0.0
.symtab 379168 379168 0 0.0
.text 1447568 1447568 0 0.0
.zero.table 0 0 0 0.0
8 8 0 0.0
qpg lighting-app qpg6105+debug (read/write) 1148608 1148608 0 0.0
.bss 110548 110548 0 0.0
.data 868 868 0 0.0
.text 595704 595704 0 0.0
lock-app qpg6105+debug (read/write) 1116504 1116504 0 0.0
.bss 106380 106380 0 0.0
.data 872 872 0 0.0
.text 563604 563604 0 0.0
telink light-switch-app tlsr9518adk80d (read/write) 814548 814548 0 0.0
bss 72172 72172 0 0.0
noinit 43488 43488 0 0.0
text 574626 574626 0 0.0
lighting-app tlsr9518adk80d (read/write) 836660 836660 0 0.0
bss 73028 73028 0 0.0
noinit 43488 43488 0 0.0
text 592846 592848 2 0.0
ota-requestor-app tlsr9518adk80d (read/write) 844612 844612 0 0.0
bss 73936 73936 0 0.0
noinit 43488 43488 0 0.0
text 599028 599026 -2 -0.0

@andy31415 andy31415 merged commit 93d0557 into project-chip:master Sep 30, 2022
sharad-patil24 pushed a commit to sharad-patil24/connectedhomeip that referenced this pull request Sep 30, 2022
…hip#22963)

22932 shuts down the fabric table as part of shutting down the stack.
This entails interactions with the persistent storage layer
to update some keys. In Python however, the storage layer has already
been shutdown by the time we get to stack shutdown, causing a
use-after-free.

Flip the order in which we shutdown the storage adapter relative to
shutting down the rest of the stack.
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