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 _InitChipStack() initialization order. #11374

Merged

Conversation

kpschoedel
Copy link
Contributor

Problem

ConfigurationMgr().Init() indirectly uses the System layer,
which has not yet been initialized, in its ‘fail-safe armed’ case.

Fixes #5336 TestPlatformMgr occasionally crashes on Linux

Change overview

Initialize Configuration Manager after the System layer.

Testing

Confirmed on Linux that adding fail-safe-armed=1 to
/tmp/chip_config.ini reliably triggers the TestPlatformMgr
crash on master, but not after this change.

Relying on CI to confirm that there are no unexpected side effects
of changing the initialization order. (There should be none, since
System::Layer does not depend on ConfigurationMgr.)

#### Problem

`ConfigurationMgr().Init()` indirectly uses the System layer,
which has not yet been initialized, in its ‘fail-safe armed’ case.

Fixes project-chip#5336 TestPlatformMgr occasionally crashes on Linux

#### Change overview

Initialize Configuration Manager after the System layer.

#### Testing

Confirmed on Linux that adding `fail-safe-armed=1` to
`/tmp/chip_config.ini` reliably triggers the `TestPlatformMgr`
crash on master, but not after this change.

Relying on CI to confirm that there are no unexpected side effects
of changing the initialization order. (There should be none, since
System::Layer does not depend on ConfigurationMgr.)
@github-actions
Copy link

github-actions bot commented Nov 3, 2021

PR #11374: Size comparison from 4947759 to fd55750

Increases (2 builds for esp32, p6)
platform target config section 4947759 fd55750 change % change
esp32 all-clusters-app m5stack (read only) 911831 911907 76 0.0
.flash.text 911831 911907 76 0.0
p6 lock-app default (read/write) 2213744 2213760 16 0.0
.text 1172008 1172024 16 0.0
Full report (38 builds for efr32, esp32, k32w, linux, mbed, nrfconnect, p6, qpg, telink)
platform target config section 4947759 fd55750 change % change
efr32 lighting-app BRD4161A (read only) 737248 737248 0 0.0
(read/write) 114620 114620 0 0.0
.bss 112860 112860 0 0.0
.data 1756 1756 0 0.0
.text 737240 737240 0 0.0
BRD4161A+rpc (read only) 726428 726428 0 0.0
(read/write) 131236 131236 0 0.0
.bss 129364 129364 0 0.0
.data 1872 1872 0 0.0
.text 726420 726420 0 0.0
lock-app BRD4161A (read only) 716528 716528 0 0.0
(read/write) 112436 112436 0 0.0
.bss 110716 110716 0 0.0
.data 1716 1716 0 0.0
.text 716520 716520 0 0.0
window-app BRD4161A (read only) 717428 717428 0 0.0
(read/write) 112756 112756 0 0.0
.bss 111036 111036 0 0.0
.data 1720 1720 0 0.0
.text 717420 717420 0 0.0
esp32 all-clusters-app c3devkit (read only) 880742 880742 0 0.0
(read/write) 1308096 1308096 0 0.0
.dram0.bss 58616 58616 0 0.0
.dram0.data 16464 16464 0 0.0
.flash.rodata 199776 199776 0 0.0
.flash.text 880742 880742 0 0.0
.iram0.text 57554 57554 0 0.0
m5stack (read only) 911831 911907 76 0.0
(read/write) 427860 427860 0 0.0
.dram0.bss 61120 61120 0 0.0
.dram0.data 32100 32100 0 0.0
.flash.rodata 208476 208476 0 0.0
.flash.text 911831 911907 76 0.0
.iram0.text 125115 125115 0 0.0
k32w lighting-app k32w061+se05x+release (read/write) 699528 699528 0 0.0
.bss 77856 77856 0 0.0
.data 1904 1904 0 0.0
.text 613968 613968 0 0.0
lock-app k32w061+debug (read/write) 591836 591836 0 0.0
.bss 68372 68372 0 0.0
.data 1868 1868 0 0.0
.text 515796 515796 0 0.0
shell k32w061+debug (read/write) 424916 424916 0 0.0
.bss 63296 63296 0 0.0
.data 668 668 0 0.0
.text 359248 359248 0 0.0
linux all-clusters-app debug (read only) 1690937 1690937 0 0.0
(read/write) 119760 119760 0 0.0
.bss 51184 51184 0 0.0
.data 1042 1042 0 0.0
.data.rel.ro 62272 62272 0 0.0
.dynamic 592 592 0 0.0
.got 4088 4088 0 0.0
.init 27 27 0 0.0
.init_array 536 536 0 0.0
.rodata 139829 139829 0 0.0
.text 1417714 1417714 0 0.0
bridge-app debug+rpc (read only) 1287325 1287325 0 0.0
(read/write) 69384 69384 0 0.0
.bss 35088 35088 0 0.0
.data 1568 1568 0 0.0
.data.rel.ro 27768 27768 0 0.0
.dynamic 592 592 0 0.0
.got 3952 3952 0 0.0
.init 27 27 0 0.0
.init_array 400 400 0 0.0
.rodata 111460 111460 0 0.0
.text 1079973 1079973 0 0.0
chip-tool debug (read only) 4351269 4351269 0 0.0
(read/write) 124896 124896 0 0.0
.bss 18224 18224 0 0.0
.data 2224 2224 0 0.0
.data.rel.ro 99040 99040 0 0.0
.dynamic 592 592 0 0.0
.got 4368 4368 0 0.0
.init 27 27 0 0.0
.init_array 424 424 0 0.0
.rodata 219560 219560 0 0.0
.text 3865669 3865669 0 0.0
lighting-app debug+rpc (read only) 1548297 1548297 0 0.0
(read/write) 102352 102352 0 0.0
.bss 40728 40728 0 0.0
.data 1170 1170 0 0.0
.data.rel.ro 55168 55168 0 0.0
.dynamic 608 608 0 0.0
.got 4112 4112 0 0.0
.init 27 27 0 0.0
.init_array 528 528 0 0.0
.rodata 130129 130129 0 0.0
.text 1284610 1284610 0 0.0
ota-provider-app debug (read only) 1243689 1243689 0 0.0
(read/write) 67552 67552 0 0.0
.bss 37152 37152 0 0.0
.data 752 752 0 0.0
.data.rel.ro 24568 24568 0 0.0
.dynamic 592 592 0 0.0
.got 4016 4016 0 0.0
.init 27 27 0 0.0
.init_array 440 440 0 0.0
.rodata 112360 112360 0 0.0
.text 1035250 1035250 0 0.0
ota-requestor-app debug (read only) 1311049 1311049 0 0.0
(read/write) 76872 76872 0 0.0
.bss 45408 45408 0 0.0
.data 816 816 0 0.0
.data.rel.ro 25512 25512 0 0.0
.dynamic 592 592 0 0.0
.got 3984 3984 0 0.0
.init 27 27 0 0.0
.init_array 512 512 0 0.0
.rodata 123328 123328 0 0.0
.text 1089954 1089954 0 0.0
shell debug (read only) 786593 786593 0 0.0
(read/write) 57664 57664 0 0.0
.bss 16104 16104 0 0.0
.data 242 242 0 0.0
.data.rel.ro 36816 36816 0 0.0
.dynamic 592 592 0 0.0
.got 3528 3528 0 0.0
.init 27 27 0 0.0
.init_array 336 336 0 0.0
.rodata 77839 77839 0 0.0
.text 607266 607266 0 0.0
tv-app debug (read only) 1810545 1810545 0 0.0
(read/write) 289944 289944 0 0.0
.bss 222768 222768 0 0.0
.data 2704 2704 0 0.0
.data.rel.ro 58824 58824 0 0.0
.dynamic 592 592 0 0.0
.got 4408 4408 0 0.0
.init 27 27 0 0.0
.init_array 608 608 0 0.0
.rodata 155640 155640 0 0.0
.text 1512642 1512642 0 0.0
mbed all-clusters-app CY8CPROTO_062_4343W+release (read only) 6224 6224 0 0.0
(read/write) 2293224 2293224 0 0.0
.bss 179972 179972 0 0.0
.data 5216 5216 0 0.0
.heap 851256 851256 0 0.0
.text 1255824 1255824 0 0.0
lighting-app CY8CPROTO_062_4343W+release (read only) 6224 6224 0 0.0
(read/write) 2272792 2272792 0 0.0
.bss 172012 172012 0 0.0
.data 5568 5568 0 0.0
.heap 858864 858864 0 0.0
.text 1235392 1235392 0 0.0
lock-app CY8CPROTO_062_4343W+release (read only) 6224 6224 0 0.0
(read/write) 2250512 2250512 0 0.0
.bss 170908 170908 0 0.0
.data 5560 5560 0 0.0
.heap 859976 859976 0 0.0
.text 1213112 1213112 0 0.0
pigweed-app CY8CPROTO_062_4343W+release (read only) 6224 6224 0 0.0
(read/write) 1139744 1139744 0 0.0
.bss 11752 11752 0 0.0
.data 4368 4368 0 0.0
.heap 1020328 1020328 0 0.0
.text 103128 103128 0 0.0
shell CY8CPROTO_062_4343W+release (read only) 6224 6224 0 0.0
(read/write) 2048496 2048496 0 0.0
.bss 156256 156256 0 0.0
.data 4960 4960 0 0.0
.heap 875232 875232 0 0.0
.text 1011096 1011096 0 0.0
nrfconnect lighting-app nrf52840dk_nrf52840 (read/write) 861395 861395 0 0.0
bss 111320 111320 0 0.0
rodata 96772 96772 0 0.0
text 577692 577692 0 0.0
nrf52840dk_nrf52840+rpc (read/write) 823771 823771 0 0.0
bss 107672 107672 0 0.0
rodata 87948 87948 0 0.0
text 551876 551876 0 0.0
nrf5340dk_nrf5340_cpuapp (read/write) 786434 786434 0 0.0
bss 112696 112696 0 0.0
rodata 92028 92028 0 0.0
text 507152 507152 0 0.0
lock-app nrf52840dk_nrf52840 (read/write) 838099 838099 0 0.0
bss 110356 110356 0 0.0
rodata 93140 93140 0 0.0
text 559168 559168 0 0.0
nrf5340dk_nrf5340_cpuapp (read/write) 763398 763398 0 0.0
bss 111764 111764 0 0.0
rodata 88448 88448 0 0.0
text 488720 488720 0 0.0
pigweed-app nrf52840dk_nrf52840 (read/write) 497323 497323 0 0.0
bss 51824 51824 0 0.0
rodata 45776 45776 0 0.0
text 339436 339436 0 0.0
pump-app nrf52840dk_nrf52840 (read/write) 844211 844211 0 0.0
bss 110492 110492 0 0.0
rodata 94852 94852 0 0.0
text 563348 563348 0 0.0
pump-controller-app nrf52840dk_nrf52840 (read/write) 837955 837955 0 0.0
bss 110392 110392 0 0.0
rodata 93140 93140 0 0.0
text 558904 558904 0 0.0
shell nrf52840dk_nrf52840 (read/write) 775991 775991 0 0.0
bss 109112 109112 0 0.0
rodata 72412 72412 0 0.0
text 519884 519884 0 0.0
nrf5340dk_nrf5340_cpuapp (read/write) 691026 691026 0 0.0
bss 110092 110092 0 0.0
rodata 67052 67052 0 0.0
text 440480 440480 0 0.0
p6 all-clusters-app default (read/write) 2300752 2300752 0 0.0
.bss 107912 107912 0 0.0
.data 2520 2520 0 0.0
.heap 922912 922912 0 0.0
.text 1259016 1259016 0 0.0
lock-app default (read/write) 2213744 2213760 16 0.0
.bss 95712 95712 0 0.0
.data 2392 2392 0 0.0
.heap 935240 935240 0 0.0
.text 1172008 1172024 16 0.0
qpg lighting-app qpg6100+debug (read only) 490784 490784 0 0.0
(read/write) 114140 114140 0 0.0
.bss 50416 50416 0 0.0
.data 1004 1004 0 0.0
.text 485464 485464 0 0.0
lock-app qpg6100+debug (read only) 467120 467120 0 0.0
(read/write) 114144 114144 0 0.0
.bss 49360 49360 0 0.0
.data 960 960 0 0.0
.text 461800 461800 0 0.0
persistent-storage-app qpg6100+debug (read only) 153212 153212 0 0.0
(read/write) 114140 114140 0 0.0
.bss 18336 18336 0 0.0
.data 356 356 0 0.0
.text 147892 147892 0 0.0
telink lighting-app tlsr9518adk80d (read/write) 662894 662894 0 0.0
bss 69132 69132 0 0.0
noinit 33216 33216 0 0.0
text 458028 458028 0 0.0

Copy link
Contributor

@bzbarsky-apple bzbarsky-apple left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is fine, but why are we ending up in the "fail-safe is armed" case in the unit tests? That's also broken, and needs to be investigated. Please make sure there's an issue tracking it?

@kpschoedel
Copy link
Contributor Author

This is fine, but why are we ending up in the "fail-safe is armed" case in the unit tests? That's also broken, and needs to be investigated. Please make sure there's an issue tracking it?

#11380 Unexpectedly armed failsafe encountered in TestPlatformMgr

@bzbarsky-apple bzbarsky-apple merged commit 249ccbc into project-chip:master Nov 3, 2021
@kpschoedel kpschoedel deleted the x5336-testplatformmgr branch November 4, 2021 14:48
PSONALl pushed a commit to PSONALl/connectedhomeip that referenced this pull request Dec 3, 2021
#### Problem

`ConfigurationMgr().Init()` indirectly uses the System layer,
which has not yet been initialized, in its ‘fail-safe armed’ case.

Fixes project-chip#5336 TestPlatformMgr occasionally crashes on Linux

#### Change overview

Initialize Configuration Manager after the System layer.

#### Testing

Confirmed on Linux that adding `fail-safe-armed=1` to
`/tmp/chip_config.ini` reliably triggers the `TestPlatformMgr`
crash on master, but not after this change.

Relying on CI to confirm that there are no unexpected side effects
of changing the initialization order. (There should be none, since
System::Layer does not depend on ConfigurationMgr.)
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.

TestPlatformMgr occasionally crashes on Linux
6 participants