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 empty report feedback loop edge-case #35899

Merged
merged 1 commit into from
Oct 4, 2024

Conversation

mkardous-silabs
Copy link
Contributor

Description

When using the Synchronized report scheduler, it was possible to hit an edge-case where the device would fall into a feedback loop sending reports if it has more than two subscriptions.

The edge-case can happen (how the bug was found) when the publisher has 2 or more subscriptions.

image

Fundemental issue is a ReadHandler was being marked as CanBeSynced (line#190) when it is already waiting for a response.
Since it is already waiting for a response, it is already synced and does not need to be synced once again.

Testing

Manual testing

Due to the nature of the "multi-task" trigger that needs to happen back to back to trigger the bug, i was not able to unit test this exact scenario. The bug was triggered when a seperate task from the chip task was causing the attributes of the subscriptions to be marked dirty.

Copy link

Review changes with SemanticDiff.

Copy link

github-actions bot commented Oct 3, 2024

PR #35899: Size comparison from 6bb8645 to b57e399

Full report (88 builds for bl602, bl702, bl702l, cc13x4_26x4, cc32xx, cyw30739, efr32, esp32, linux, nrfconnect, nxp, psoc6, qpg, stm32, telink, tizen)
platform target config section 6bb8645 b57e399 change % change
bl602 lighting-app bl602 FLASH 1280534 1280534 0 0.0
RAM 95808 95808 0 0.0
bl602+mfd FLASH 1308582 1308582 0 0.0
RAM 95464 95464 0 0.0
bl602+rpc FLASH 1335202 1335202 0 0.0
RAM 103784 103784 0 0.0
bl702 lighting-app bl702 FLASH 944934 944934 0 0.0
RAM 15105 15105 0 0.0
bl702+mfd FLASH 957388 957388 0 0.0
RAM 14769 14769 0 0.0
bl702+rpc FLASH 1051092 1051092 0 0.0
RAM 23661 23661 0 0.0
bl706-eth FLASH 658066 658066 0 0.0
RAM 24745 24745 0 0.0
bl706-wifi FLASH 824862 824862 0 0.0
RAM 13965 13965 0 0.0
bl702l lighting-app bl702l FLASH 961870 961870 0 0.0
RAM 16804 16804 0 0.0
bl702l+mfd FLASH 974632 974632 0 0.0
RAM 16468 16468 0 0.0
cc13x4_26x4 lighting-app LP_EM_CC1354P10_6 FLASH 829540 829540 0 0.0
RAM 123300 123300 0 0.0
lock-ftd LP_EM_CC1354P10_6 FLASH 814608 814608 0 0.0
RAM 125172 125172 0 0.0
pump-app LP_EM_CC1354P10_6 FLASH 761156 761156 0 0.0
RAM 113664 113664 0 0.0
pump-controller-app LP_EM_CC1354P10_6 FLASH 745392 745392 0 0.0
RAM 113856 113856 0 0.0
cc32xx air-purifier CC3235SF_LAUNCHXL FLASH 616882 616882 0 0.0
RAM 205396 205396 0 0.0
lock CC3235SF_LAUNCHXL FLASH 656970 656970 0 0.0
RAM 205548 205548 0 0.0
cyw30739 light CYW30739B2-P5-EVK-01 unknown 2040 2040 0 0.0
FLASH 678509 678509 0 0.0
RAM 78516 78516 0 0.0
CYW30739B2-P5-EVK-02 unknown 2040 2040 0 0.0
FLASH 698361 698361 0 0.0
RAM 81148 81148 0 0.0
CYW30739B2-P5-EVK-03 unknown 2040 2040 0 0.0
FLASH 698361 698361 0 0.0
RAM 81148 81148 0 0.0
CYW930739M2EVB-02 unknown 2040 2040 0 0.0
FLASH 655289 655289 0 0.0
RAM 73584 73584 0 0.0
light-switch CYW30739B2-P5-EVK-01 unknown 2040 2040 0 0.0
FLASH 614581 614581 0 0.0
RAM 71468 71468 0 0.0
CYW30739B2-P5-EVK-02 unknown 2040 2040 0 0.0
FLASH 634209 634209 0 0.0
RAM 74020 74020 0 0.0
CYW30739B2-P5-EVK-03 unknown 2040 2040 0 0.0
FLASH 634209 634209 0 0.0
RAM 74020 74020 0 0.0
lock CYW30739B2-P5-EVK-01 unknown 2040 2040 0 0.0
FLASH 633893 633893 0 0.0
RAM 74516 74516 0 0.0
CYW30739B2-P5-EVK-02 unknown 2040 2040 0 0.0
FLASH 653609 653609 0 0.0
RAM 77068 77068 0 0.0
CYW30739B2-P5-EVK-03 unknown 2040 2040 0 0.0
FLASH 653609 653609 0 0.0
RAM 77068 77068 0 0.0
thermostat CYW30739B2-P5-EVK-01 unknown 2040 2040 0 0.0
FLASH 609197 609197 0 0.0
RAM 68604 68604 0 0.0
CYW30739B2-P5-EVK-02 unknown 2040 2040 0 0.0
FLASH 629057 629057 0 0.0
RAM 71236 71236 0 0.0
CYW30739B2-P5-EVK-03 unknown 2040 2040 0 0.0
FLASH 629057 629057 0 0.0
RAM 71236 71236 0 0.0
efr32 lighting-app BRD4187C FLASH 934044 934044 0 0.0
RAM 135884 135884 0 0.0
lock-app BRD2605a FLASH 740168 740168 0 0.0
RAM 230240 230240 0 0.0
BRD4338a FLASH 740816 740816 0 0.0
RAM 230272 230272 0 0.0
window-app BRD4187C FLASH 1017160 1017184 24 0.0
RAM 127804 127804 0 0.0
esp32 all-clusters-app c3devkit DRAM 94080 94080 0 0.0
FLASH 1538358 1538358 0 0.0
IRAM 82538 82538 0 0.0
m5stack DRAM 115032 115032 0 0.0
FLASH 1548794 1548794 0 0.0
IRAM 117039 117039 0 0.0
linux air-purifier-app debug unknown 4688 4688 0 0.0
FLASH 2778727 2778727 0 0.0
RAM 129488 129488 0 0.0
all-clusters-app debug unknown 5528 5528 0 0.0
FLASH 6082158 6082158 0 0.0
RAM 507968 507968 0 0.0
all-clusters-minimal-app debug unknown 5424 5424 0 0.0
FLASH 5415956 5415956 0 0.0
RAM 241200 241200 0 0.0
bridge-app debug unknown 5408 5408 0 0.0
FLASH 4749374 4749374 0 0.0
RAM 218384 218384 0 0.0
chip-tool debug unknown 5960 5960 0 0.0
FLASH 12588970 12588970 0 0.0
RAM 556466 556466 0 0.0
chip-tool-ipv6only arm64 unknown 20560 20560 0 0.0
FLASH 11240352 11240352 0 0.0
RAM 606744 606744 0 0.0
fabric-admin debug unknown 5792 5792 0 0.0
FLASH 10943425 10943425 0 0.0
RAM 555578 555578 0 0.0
fabric-bridge-app debug unknown 4640 4640 0 0.0
FLASH 4572574 4572574 0 0.0
RAM 205048 205048 0 0.0
lighting-app debug+rpc+ui unknown 6056 6056 0 0.0
FLASH 5690273 5690273 0 0.0
RAM 228648 228648 0 0.0
lock-app debug unknown 5344 5344 0 0.0
FLASH 4798972 4798972 0 0.0
RAM 204472 204472 0 0.0
ota-provider-app debug unknown 4720 4720 0 0.0
FLASH 4428360 4428360 0 0.0
RAM 198192 198192 0 0.0
ota-requestor-app debug unknown 4656 4656 0 0.0
FLASH 4567176 4567176 0 0.0
RAM 202760 202760 0 0.0
shell debug unknown 4216 4216 0 0.0
FLASH 3108765 3108765 0 0.0
RAM 159280 159280 0 0.0
thermostat-no-ble arm64 unknown 9448 9448 0 0.0
FLASH 4317088 4317088 0 0.0
RAM 242888 242888 0 0.0
tv-app debug unknown 5624 5624 0 0.0
FLASH 6026293 6026293 0 0.0
RAM 581504 581504 0 0.0
tv-casting-app debug unknown 5208 5208 0 0.0
FLASH 10783357 10783357 0 0.0
RAM 644384 644384 0 0.0
nrfconnect all-clusters-app nrf52840dk_nrf52840 FLASH 914168 914168 0 0.0
RAM 142199 142199 0 0.0
nrf7002dk_nrf5340_cpuapp FLASH 884952 884952 0 0.0
RAM 140338 140338 0 0.0
all-clusters-minimal-app nrf52840dk_nrf52840 FLASH 847588 847588 0 0.0
RAM 141093 141093 0 0.0
nxp contact k32w0+release FLASH 581944 581944 0 0.0
RAM 70784 70784 0 0.0
k32w1+release FLASH 596648 596648 0 0.0
RAM 63008 63008 0 0.0
mcxw71+release FLASH 596408 596408 0 0.0
RAM 63008 63008 0 0.0
light k32w0+release FLASH 618516 618516 0 0.0
RAM 70256 70256 0 0.0
k32w1+release FLASH 682632 682632 0 0.0
RAM 48648 48648 0 0.0
mcxw71+release FLASH 682632 682632 0 0.0
RAM 48648 48648 0 0.0
lock k32w1+release FLASH 705008 705008 0 0.0
RAM 67148 67148 0 0.0
mcxw71+release FLASH 705016 705016 0 0.0
RAM 67148 67148 0 0.0
psoc6 all-clusters cy8ckit_062s2_43012 FLASH 1646044 1646044 0 0.0
RAM 210888 210888 0 0.0
all-clusters-minimal cy8ckit_062s2_43012 FLASH 1552100 1552100 0 0.0
RAM 207688 207688 0 0.0
light cy8ckit_062s2_43012 FLASH 1467852 1467852 0 0.0
RAM 200696 200696 0 0.0
lock cy8ckit_062s2_43012 FLASH 1464644 1464644 0 0.0
RAM 225048 225048 0 0.0
qpg lighting-app qpg6105+debug FLASH 660272 660272 0 0.0
RAM 105236 105236 0 0.0
lock-app qpg6105+debug FLASH 618284 618284 0 0.0
RAM 99704 99704 0 0.0
stm32 light STM32WB5MM-DK FLASH 481832 481832 0 0.0
RAM 144692 144692 0 0.0
telink air-quality-sensor-app tlsr9528a_retention FLASH 620672 620672 0 0.0
RAM 50488 50488 0 0.0
all-clusters-app tlsr9118bdk40d FLASH 687868 687868 0 0.0
RAM 148328 148328 0 0.0
all-clusters-minimal-app tlsr9528a FLASH 780860 780860 0 0.0
RAM 110280 110280 0 0.0
bridge-app tlsr9258a FLASH 680770 680770 0 0.0
RAM 91144 91144 0 0.0
contact-sensor-app tlsr9528a_retention FLASH 620436 620436 0 0.0
RAM 50440 50440 0 0.0
light-switch-app-ota-shell-factory-data tlsr9528a FLASH 708376 708376 0 0.0
RAM 73780 73780 0 0.0
lighting-app-ota-factory-data tlsr9118bdk40d FLASH 625550 625550 0 0.0
RAM 144316 144316 0 0.0
lighting-app-ota-rpc-factory-data-4mb tlsr9518adk80d FLASH 811310 811310 0 0.0
RAM 98948 98948 0 0.0
lock-app-dfu tlsr9528a FLASH 656342 656342 0 0.0
RAM 66500 66500 0 0.0
ota-requestor-app tlsr9258a FLASH 696746 696746 0 0.0
RAM 90736 90736 0 0.0
pump-app-usb tlsr9518adk80d FLASH 634068 634068 0 0.0
RAM 55316 55316 0 0.0
pump-controller-app tlsr9518adk80d FLASH 611258 611258 0 0.0
RAM 52560 52560 0 0.0
shell tlsr9518adk80d FLASH 467862 467862 0 0.0
RAM 68168 68168 0 0.0
smoke_co_alarm-app tlsr9528a_retention FLASH 627566 627566 0 0.0
RAM 52160 52160 0 0.0
temperature-measurement-app-mars-ota tlsr9518adk80d FLASH 653394 653394 0 0.0
RAM 56108 56108 0 0.0
thermostat tlsr9518adk80d FLASH 637990 637990 0 0.0
RAM 52952 52952 0 0.0
window-covering tlsr9118bdk40d FLASH 524132 524132 0 0.0
RAM 97284 97284 0 0.0
tizen all-clusters-app arm unknown 4904 4904 0 0.0
FLASH 1725728 1725728 0 0.0
RAM 89076 89076 0 0.0
chip-tool-ubsan arm unknown 10368 10368 0 0.0
FLASH 17414154 17414154 0 0.0
RAM 7582104 7582104 0 0.0

@mergify mergify bot merged commit ad57f01 into project-chip:master Oct 4, 2024
69 checks passed
@mkardous-silabs mkardous-silabs deleted the fix/empty_report_loop branch October 4, 2024 13:29
yyzhong-g pushed a commit to yyzhong-g/connectedhomeip that referenced this pull request Dec 12, 2024
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