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 echo_requester TCP leak #12031

Merged

Conversation

kpschoedel
Copy link
Contributor

Problem

echo_requester.cpp leaks TCP endpoints.

Instance of #11880 Possible use of destroyed pool objects

Change overview

Shut down TCPManager.

Testing

If ObjectPool checks that objects do not outlive it
(originally part of PR #11698 but deferred due to current leaks),
then Cirque CI fails without this change.

#### Problem

`echo_requester.cpp` leaks TCP endpoints.

Instance of project-chip#11880 _Possible use of destroyed pool objects_

#### Change overview

Shut down `TCPManager`.

#### Testing

If `ObjectPool` checks that objects do not outlive it
(originally part of PR project-chip#11698 but deferred due to current leaks),
then Cirque CI fails without this change.
@github-actions
Copy link

github-actions bot commented Nov 19, 2021

PR #12031: Size comparison from ebadd33 to 6139848

Full report (38 builds for efr32, esp32, k32w, linux, mbed, nrfconnect, p6, qpg, telink)
platform target config section ebadd33 6139848 change % change
efr32 lighting-app BRD4161A (read only) 749960 749960 0 0.0
(read/write) 115540 115540 0 0.0
.bss 113740 113740 0 0.0
.data 1800 1800 0 0.0
.text 749952 749952 0 0.0
BRD4161A+rpc (read only) 737484 737484 0 0.0
(read/write) 132168 132168 0 0.0
.bss 130244 130244 0 0.0
.data 1924 1924 0 0.0
.text 737476 737476 0 0.0
lock-app BRD4161A (read only) 727016 727016 0 0.0
(read/write) 113324 113324 0 0.0
.bss 111564 111564 0 0.0
.data 1756 1756 0 0.0
.text 727008 727008 0 0.0
window-app BRD4161A (read only) 728000 728000 0 0.0
(read/write) 113644 113644 0 0.0
.bss 111884 111884 0 0.0
.data 1760 1760 0 0.0
.text 727992 727992 0 0.0
esp32 all-clusters-app c3devkit (read only) 828538 828538 0 0.0
(read/write) 1220178 1220178 0 0.0
.dram0.bss 56688 56688 0 0.0
.dram0.data 14084 14084 0 0.0
.flash.rodata 164152 164152 0 0.0
.flash.text 828538 828538 0 0.0
.iram0.text 61394 61394 0 0.0
m5stack (read only) 899595 899595 0 0.0
(read/write) 419492 419492 0 0.0
.dram0.bss 62040 62040 0 0.0
.dram0.data 34056 34056 0 0.0
.flash.rodata 192116 192116 0 0.0
.flash.text 894211 894211 0 0.0
.iram0.text 122943 122943 0 0.0
k32w lighting-app k32w061+se05x+release (read/write) 706872 706872 0 0.0
.bss 77164 77164 0 0.0
.data 1912 1912 0 0.0
.text 621996 621996 0 0.0
lock-app k32w061+debug (read/write) 598312 598312 0 0.0
.bss 67676 67676 0 0.0
.data 1880 1880 0 0.0
.text 522956 522956 0 0.0
shell k32w061+debug (read/write) 663656 663656 0 0.0
.bss 78804 78804 0 0.0
.data 1848 1848 0 0.0
.text 577204 577204 0 0.0
linux all-clusters-app debug (read only) 1726153 1726153 0 0.0
(read/write) 126816 126816 0 0.0
.bss 57392 57392 0 0.0
.data 1042 1042 0 0.0
.data.rel.ro 63088 63088 0 0.0
.dynamic 592 592 0 0.0
.got 4112 4112 0 0.0
.init 27 27 0 0.0
.init_array 552 552 0 0.0
.rodata 136661 136661 0 0.0
.text 1455538 1455538 0 0.0
bridge-app debug+rpc (read only) 1321181 1321181 0 0.0
(read/write) 77008 77008 0 0.0
.bss 42096 42096 0 0.0
.data 1568 1568 0 0.0
.data.rel.ro 28352 28352 0 0.0
.dynamic 592 592 0 0.0
.got 3984 3984 0 0.0
.init 27 27 0 0.0
.init_array 408 408 0 0.0
.rodata 111932 111932 0 0.0
.text 1111845 1111845 0 0.0
chip-tool debug (read only) 4986061 4986061 0 0.0
(read/write) 166888 166888 0 0.0
.bss 40456 40456 0 0.0
.data 2272 2272 0 0.0
.data.rel.ro 118672 118672 0 0.0
.dynamic 592 592 0 0.0
.got 4416 4416 0 0.0
.init 27 27 0 0.0
.init_array 472 472 0 0.0
.rodata 268458 268458 0 0.0
.text 4407093 4407093 0 0.0
lighting-app debug+rpc (read only) 1590289 1590289 0 0.0
(read/write) 110224 110224 0 0.0
.bss 47760 47760 0 0.0
.data 1234 1234 0 0.0
.data.rel.ro 55920 55920 0 0.0
.dynamic 608 608 0 0.0
.got 4136 4136 0 0.0
.init 27 27 0 0.0
.init_array 536 536 0 0.0
.rodata 129553 129553 0 0.0
.text 1325730 1325730 0 0.0
ota-provider-app debug (read only) 1268729 1268729 0 0.0
(read/write) 75656 75656 0 0.0
.bss 44704 44704 0 0.0
.data 784 784 0 0.0
.data.rel.ro 25080 25080 0 0.0
.dynamic 592 592 0 0.0
.got 4016 4016 0 0.0
.init 27 27 0 0.0
.init_array 448 448 0 0.0
.rodata 113951 113951 0 0.0
.text 1057186 1057186 0 0.0
ota-requestor-app debug (read only) 1354465 1354465 0 0.0
(read/write) 79392 79392 0 0.0
.bss 47168 47168 0 0.0
.data 848 848 0 0.0
.data.rel.ro 26280 26280 0 0.0
.dynamic 592 592 0 0.0
.got 3992 3992 0 0.0
.init 27 27 0 0.0
.init_array 472 472 0 0.0
.rodata 124968 124968 0 0.0
.text 1129522 1129522 0 0.0
shell debug (read only) 798801 798801 0 0.0
(read/write) 66440 66440 0 0.0
.bss 23944 23944 0 0.0
.data 242 242 0 0.0
.data.rel.ro 37752 37752 0 0.0
.dynamic 592 592 0 0.0
.got 3528 3528 0 0.0
.init 27 27 0 0.0
.init_array 344 344 0 0.0
.rodata 78703 78703 0 0.0
.text 616082 616082 0 0.0
tv-app debug (read only) 1872785 1872785 0 0.0
(read/write) 318968 318968 0 0.0
.bss 250376 250376 0 0.0
.data 2768 2768 0 0.0
.data.rel.ro 60144 60144 0 0.0
.dynamic 592 592 0 0.0
.got 4432 4432 0 0.0
.init 27 27 0 0.0
.init_array 616 616 0 0.0
.rodata 157893 157893 0 0.0
.text 1569762 1569762 0 0.0
mbed all-clusters-app CY8CPROTO_062_4343W+release (read only) 6224 6224 0 0.0
(read/write) 2287616 2287616 0 0.0
.bss 179284 179284 0 0.0
.data 5216 5216 0 0.0
.heap 851944 851944 0 0.0
.text 1250216 1250216 0 0.0
lighting-app CY8CPROTO_062_4343W+release (read only) 6224 6224 0 0.0
(read/write) 2273552 2273552 0 0.0
.bss 172148 172148 0 0.0
.data 5576 5576 0 0.0
.heap 858720 858720 0 0.0
.text 1236152 1236152 0 0.0
lock-app CY8CPROTO_062_4343W+release (read only) 6224 6224 0 0.0
(read/write) 2249456 2249456 0 0.0
.bss 171036 171036 0 0.0
.data 5568 5568 0 0.0
.heap 859840 859840 0 0.0
.text 1212056 1212056 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) 2050480 2050480 0 0.0
.bss 156224 156224 0 0.0
.data 4968 4968 0 0.0
.heap 875256 875256 0 0.0
.text 1013080 1013080 0 0.0
nrfconnect lighting-app nrf52840dk_nrf52840 (read/write) 864595 864595 0 0.0
bss 110560 110560 0 0.0
rodata 95828 95828 0 0.0
text 582604 582604 0 0.0
nrf52840dk_nrf52840+rpc (read/write) 826995 826995 0 0.0
bss 106916 106916 0 0.0
rodata 87012 87012 0 0.0
text 556772 556772 0 0.0
nrf5340dk_nrf5340_cpuapp (read/write) 789650 789650 0 0.0
bss 111936 111936 0 0.0
rodata 91084 91084 0 0.0
text 512076 512076 0 0.0
lock-app nrf52840dk_nrf52840 (read/write) 840027 840027 0 0.0
bss 109584 109584 0 0.0
rodata 92300 92300 0 0.0
text 562696 562696 0 0.0
nrf5340dk_nrf5340_cpuapp (read/write) 765330 765330 0 0.0
bss 110996 110996 0 0.0
rodata 87604 87604 0 0.0
text 492260 492260 0 0.0
pigweed-app nrf52840dk_nrf52840 (read/write) 497327 497327 0 0.0
bss 51824 51824 0 0.0
rodata 45780 45780 0 0.0
text 339436 339436 0 0.0
pump-app nrf52840dk_nrf52840 (read/write) 846135 846135 0 0.0
bss 109724 109724 0 0.0
rodata 94008 94008 0 0.0
text 566880 566880 0 0.0
pump-controller-app nrf52840dk_nrf52840 (read/write) 839727 839727 0 0.0
bss 109620 109620 0 0.0
rodata 92256 92256 0 0.0
text 562316 562316 0 0.0
shell nrf52840dk_nrf52840 (read/write) 777971 777971 0 0.0
bss 109068 109068 0 0.0
rodata 73064 73064 0 0.0
text 521236 521236 0 0.0
nrf5340dk_nrf5340_cpuapp (read/write) 693026 693026 0 0.0
bss 110052 110052 0 0.0
rodata 67708 67708 0 0.0
text 441848 441848 0 0.0
p6 all-clusters-app default (read/write) 2297968 2297968 0 0.0
.bss 112272 112272 0 0.0
.data 2520 2520 0 0.0
.heap 918552 918552 0 0.0
.text 1256232 1256232 0 0.0
lock-app default (read/write) 2215456 2215456 0 0.0
.bss 100896 100896 0 0.0
.data 2400 2400 0 0.0
.heap 930048 930048 0 0.0
.text 1173720 1173720 0 0.0
qpg lighting-app qpg6100+debug (read only) 493688 493688 0 0.0
(read/write) 114144 114144 0 0.0
.bss 50208 50208 0 0.0
.data 1008 1008 0 0.0
.text 488368 488368 0 0.0
lock-app qpg6100+debug (read only) 468652 468652 0 0.0
(read/write) 114140 114140 0 0.0
.bss 49152 49152 0 0.0
.data 964 964 0 0.0
.text 463332 463332 0 0.0
persistent-storage-app qpg6100+debug (read only) 105408 105408 0 0.0
(read/write) 114142 114142 0 0.0
.bss 8978 8978 0 0.0
.data 272 272 0 0.0
.text 100088 100088 0 0.0
telink lighting-app tlsr9518adk80d (read/write) 768010 768010 0 0.0
bss 79072 79072 0 0.0
noinit 37160 37160 0 0.0
text 533194 533194 0 0.0

@kpschoedel kpschoedel merged commit 4bb1e67 into project-chip:master Nov 21, 2021
@kpschoedel kpschoedel deleted the x11880-fix-echo-requester branch November 21, 2021 16:00
kpschoedel added a commit to kpschoedel/connectedhomeip that referenced this pull request Nov 29, 2021
#### Problem

No action is taken if an `ObjectPool` is destroyed while objects
remain live. For the `BitMapObjectPool` case, such objects can't
be safely touched. For `HeapObjectPool` such objects can be used
but can't be released.

Some leaks have been fixed (project-chip#11983, project-chip#12031), but there are still
a few remaining.

Fixes project-chip#11880 Possible use of destroyed pool objects

#### Change overview

- Adds a template argument to choose between two options when an
  `ObjectPool` is destroyed with live objects: to either release
  all objects (which calls their destructors), or to die with an
  error message.
- For existing cases in `SessionManager`, free leftover objects.
  **XXX file issue**

#### Testing

CI; no changes to functionality.
kpschoedel added a commit to kpschoedel/connectedhomeip that referenced this pull request Nov 29, 2021
#### Problem

No action is taken if an `ObjectPool` is destroyed while objects
remain live. For the `BitMapObjectPool` case, such objects can't
be safely touched. For `HeapObjectPool` such objects can be used
but can't be released.

Some leaks have been fixed (project-chip#11983, project-chip#12031), but there are still
a few remaining.

Fixes project-chip#11880 Possible use of destroyed pool objects

#### Change overview

- Adds a template argument to choose between two options when an
  `ObjectPool` is destroyed with live objects: to either release
  all objects (which calls their destructors), or to die with an
  error message.
- For existing cases in `SessionManager`, free leftover objects.
  **XXX file issue**

#### Testing

CI; no changes to functionality.
kpschoedel added a commit to kpschoedel/connectedhomeip that referenced this pull request Nov 30, 2021
#### Problem

No action is taken if an `ObjectPool` is destroyed while objects
remain live. For the `BitMapObjectPool` case, such objects can't
be safely touched. For `HeapObjectPool` such objects can be used
but can't be released.

Some leaks have been fixed (project-chip#11983, project-chip#12031), but there are still
a few remaining.

Fixes project-chip#11880 Possible use of destroyed pool objects

#### Change overview

- Adds a template argument to choose between two options when an
  `ObjectPool` is destroyed with live objects: to either release
  all objects (which calls their destructors), or to die with an
  error message.
- Fix shutdown ordering in `DeviceControllerSystemState`.
- For existing cases in `SessionManager`, free leftover objects.
  **XXX file issue**

#### Testing

CI; no changes to functionality.
kpschoedel added a commit to kpschoedel/connectedhomeip that referenced this pull request Nov 30, 2021
#### Problem

No action is taken if an `ObjectPool` is destroyed while objects
remain live. For the `BitMapObjectPool` case, such objects can't
be safely touched. For `HeapObjectPool` such objects can be used
but can't be released.

Some leaks have been fixed (project-chip#11983, project-chip#12031), but there are still
a few remaining.

Fixes project-chip#11880 Possible use of destroyed pool objects

#### Change overview

- Adds a template argument to choose between two options when an
  `ObjectPool` is destroyed with live objects: to either release
  all objects (which calls their destructors), or to die with an
  error message.
- For existing cases in `SessionManager`, free leftover objects.
  **XXX file issue**
- Fix shutdown ordering in `DeviceControllerSystemState`.

#### Testing

CI; no changes to functionality.
kpschoedel added a commit to kpschoedel/connectedhomeip that referenced this pull request Nov 30, 2021
#### Problem

No action is taken if an `ObjectPool` is destroyed while objects
remain live. For the `BitMapObjectPool` case, such objects can't
be safely touched. For `HeapObjectPool` such objects can be used
but can't be released.

Some leaks have been fixed (project-chip#11983, project-chip#12031), but there are still
a few remaining.

Fixes project-chip#11880 Possible use of destroyed pool objects

#### Change overview

- Adds a template argument to choose between two options when an
  `ObjectPool` is destroyed with live objects: to either release
  all objects (which calls their destructors), or to die with an
  error message.
- For existing cases in `SessionManager`, free leftover objects.
  **XXX file issue**

#### Testing

CI; no changes to functionality.
kpschoedel added a commit to kpschoedel/connectedhomeip that referenced this pull request Nov 30, 2021
#### Problem

No action is taken if an `ObjectPool` is destroyed while objects
remain live. For the `BitMapObjectPool` case, such objects can't
be safely touched. For `HeapObjectPool` such objects can be used
but can't be released.

Some leaks have been fixed (project-chip#11983, project-chip#12031), but there are still
a few remaining.

Fixes project-chip#11880 Possible use of destroyed pool objects

#### Change overview

- Adds a template argument to choose between two options when an
  `ObjectPool` is destroyed with live objects: to either release
  all objects (which calls their destructors), or to die with an
  error message.
- For existing cases in `SessionManager`, free leftover objects.
  **XXX file issue**
- Fix shutdown ordering in `DeviceControllerSystemState`.

#### Testing

CI; no changes to functionality.
kpschoedel added a commit to kpschoedel/connectedhomeip that referenced this pull request Nov 30, 2021
#### Problem

No action is taken if an `ObjectPool` is destroyed while objects
remain live. For the `BitMapObjectPool` case, such objects can't
be safely touched. For `HeapObjectPool` such objects can be used
but can't be released.

Some leaks have been fixed (project-chip#11983, project-chip#12031), but there are still
a few remaining.

Fixes project-chip#11880 Possible use of destroyed pool objects

#### Change overview

- Adds a template argument to choose between two options when an
  `ObjectPool` is destroyed with live objects: to either release
  all objects (which calls their destructors), or to die with an
  error message.
- For existing cases in `SessionManager`, free leftover objects.
- Fix shutdown ordering in `DeviceControllerSystemState`.

#### Testing

CI; no changes to functionality.
kpschoedel added a commit to kpschoedel/connectedhomeip that referenced this pull request Dec 1, 2021
#### Problem

No action is taken if an `ObjectPool` is destroyed while objects
remain live. For the `BitMapObjectPool` case, such objects can't
be safely touched. For `HeapObjectPool` such objects can be used
but can't be released.

Some leaks have been fixed (project-chip#11983, project-chip#12031), but there are still
a few remaining.

Fixes project-chip#11880 _Possible use of destroyed pool objects_

#### Change overview

- Adds a template argument to choose between two options when an
  `ObjectPool` is destroyed with live objects: to either release
  all objects (which calls their destructors), or to die with an
  error message.
- For existing cases in `SessionManager`, free leftover objects.
- Fix shutdown ordering in `DeviceControllerSystemState`.

#### Testing

CI; no changes to functionality.
kpschoedel added a commit to kpschoedel/connectedhomeip that referenced this pull request Dec 1, 2021
#### Problem

No action is taken if an `ObjectPool` is destroyed while objects
remain live. For the `BitMapObjectPool` case, such objects can't
be safely touched. For `HeapObjectPool` such objects can be used
but can't be released.

Some leaks have been fixed (project-chip#11983, project-chip#12031), but there are still
a few remaining.

Fixes project-chip#11880 Possible use of destroyed pool objects

#### Change overview

- Adds a template argument to choose between two options when an
  `ObjectPool` is destroyed with live objects: to either release
  all objects (which calls their destructors), or to die with an
  error message.
- For existing cases in `SessionManager`, free leftover objects.
  **XXX file issue**
- Fix shutdown ordering in `DeviceControllerSystemState`.

#### Testing

CI; no changes to functionality.
kpschoedel added a commit to kpschoedel/connectedhomeip that referenced this pull request Dec 1, 2021
#### Problem

No action is taken if an `ObjectPool` is destroyed while objects
remain live. For the `BitMapObjectPool` case, such objects can't
be safely touched. For `HeapObjectPool` such objects can be used
but can't be released.

Some leaks have been fixed (project-chip#11983, project-chip#12031), but there are still
a few remaining.

Fixes project-chip#11880 _Possible use of destroyed pool objects_

#### Change overview

- Adds a template argument to choose between two options when an
  `ObjectPool` is destroyed with live objects: to either release
  all objects (which calls their destructors), or to die with an
  error message.
- For existing cases in `SessionManager`, free leftover objects.
- Fix shutdown ordering in `DeviceControllerSystemState`.

#### Testing

CI; no changes to functionality.
kpschoedel added a commit to kpschoedel/connectedhomeip that referenced this pull request Dec 1, 2021
#### Problem

No action is taken if an `ObjectPool` is destroyed while objects
remain live. For the `BitMapObjectPool` case, such objects can't
be safely touched. For `HeapObjectPool` such objects can be used
but can't be released.

Some leaks have been fixed (project-chip#11983, project-chip#12031), but there are still
a few remaining.

Fixes project-chip#11880 _Possible use of destroyed pool objects_

#### Change overview

- Add a `BitMapObjectPool` template argument indicating what to
  do if it is destroyed with live objects: abort  with an error
  message, release all objects (which calls their destructors),
  or (transitionally) ignore the condition.
- Fix shutdown ordering in `DeviceControllerSystemState`.
- For existing pools in `SessionManager`, ignore the condition.

#### Testing

CI; no changes to functionality.
kpschoedel added a commit to kpschoedel/connectedhomeip that referenced this pull request Dec 1, 2021
#### Problem

No action is taken if an `ObjectPool` is destroyed while objects
remain live. For the `BitMapObjectPool` case, such objects can't
be safely touched. For `HeapObjectPool` such objects can be used
but can't be released.

Some leaks have been fixed (project-chip#11983, project-chip#12031), but there are still
a few remaining.

Fixes project-chip#11880 _Possible use of destroyed pool objects_

#### Change overview

- Add a `BitMapObjectPool` template argument indicating what to
  do if it is destroyed with live objects: abort  with an error
  message, release all objects (which calls their destructors),
  or (transitionally) ignore the condition.
- Fix shutdown ordering in `DeviceControllerSystemState`.
- For existing pools in `SessionManager`, ignore the condition.

#### Testing

CI; no changes to functionality.
kpschoedel added a commit to kpschoedel/connectedhomeip that referenced this pull request Dec 1, 2021
#### Problem

No action is taken if an `ObjectPool` is destroyed while objects
remain live. For the `BitMapObjectPool` case, such objects can't
be safely touched. For `HeapObjectPool` such objects can be used
but can't be released.

Some leaks have been fixed (project-chip#11983, project-chip#12031), but there are still
a few remaining.

Fixes project-chip#11880 _Possible use of destroyed pool objects_

#### Change overview

- Add an `ObjectPool` template argument indicating what to do if
  it is destroyed with live objects: abort with an error message,
  release all objects (which calls their destructors), or ignore
  the condition (transitionally, until all leaks are fixed).
- Fix shutdown ordering in `DeviceControllerSystemState`.
- For existing pools in `SessionManager`, ignore the condition.

#### Testing

CI; no changes to functionality.
kpschoedel added a commit to kpschoedel/connectedhomeip that referenced this pull request Dec 1, 2021
#### Problem

No action is taken if an `ObjectPool` is destroyed while objects
remain live. For the `BitMapObjectPool` case, such objects can't
be safely touched. For `HeapObjectPool` such objects can be used
but can't be released.

Some leaks have been fixed (project-chip#11983, project-chip#12031), but there are still
a few remaining.

Fixes project-chip#11880 _Possible use of destroyed pool objects_

#### Change overview

- Add a `BitMapObjectPool` template argument indicating what to
  do if it is destroyed with live objects: abort  with an error
  message, release all objects (which calls their destructors),
  or (transitionally) ignore the condition.
- Fix shutdown ordering in `DeviceControllerSystemState`.
- For existing pools in `SessionManager`, ignore the condition.

#### Testing

CI; no changes to functionality.
kpschoedel added a commit to kpschoedel/connectedhomeip that referenced this pull request Dec 1, 2021
#### Problem

No action is taken if an `ObjectPool` is destroyed while objects
remain live. For the `BitMapObjectPool` case, such objects can't
be safely touched. For `HeapObjectPool` such objects can be used
but can't be released.

Some leaks have been fixed (project-chip#11983, project-chip#12031), but there are still
a few remaining.

Fixes project-chip#11880 _Possible use of destroyed pool objects_

#### Change overview

- Add an `ObjectPool` template argument indicating what to do if
  it is destroyed with live objects: abort with an error message,
  release all objects (which calls their destructors), or ignore
  the condition (transitionally, until all leaks are fixed).
- Fix shutdown ordering in `DeviceControllerSystemState`.
- For existing pools in `SessionManager`, ignore the condition.

#### Testing

CI; no changes to functionality.
kpschoedel added a commit to kpschoedel/connectedhomeip that referenced this pull request Dec 1, 2021
#### Problem

No action is taken if an `ObjectPool` is destroyed while objects
remain live. For the `BitMapObjectPool` case, such objects can't
be safely touched. For `HeapObjectPool` such objects can be used
but can't be released.

Some leaks have been fixed (project-chip#11983, project-chip#12031), but there are still
a few remaining.

Fixes project-chip#11880 _Possible use of destroyed pool objects_

#### Change overview

- Add an `ObjectPool` template argument indicating what to do if
  it is destroyed with live objects: abort with an error message,
  release all objects (which calls their destructors), or ignore
  the condition (transitionally, until all leaks are fixed).
- Fix shutdown ordering in `DeviceControllerSystemState`.
- For existing pools in `SessionManager`, ignore the condition.

#### Testing

CI; no changes to functionality.
kpschoedel added a commit to kpschoedel/connectedhomeip that referenced this pull request Dec 2, 2021
#### Problem

No action is taken if an `ObjectPool` is destroyed while objects
remain live. For the `BitMapObjectPool` case, such objects can't
be safely touched. For `HeapObjectPool` such objects can be used
but can't be released.

Some leaks have been fixed (project-chip#11983, project-chip#12031), but there are still
a few remaining.

Fixes project-chip#11880 _Possible use of destroyed pool objects_

#### Change overview

- Add an `ObjectPool` template argument indicating what to do if
  it is destroyed with live objects: abort with an error message,
  release all objects (which calls their destructors), or ignore
  the condition (transitionally, until all leaks are fixed).
- Fix shutdown ordering in `DeviceControllerSystemState`.
- For existing pools in `SessionManager`, `InteractionModelEngine`,
  and `GroupDataProviderImpl`, ignore the condition.

#### Testing

CI; no changes to functionality.
kpschoedel added a commit to kpschoedel/connectedhomeip that referenced this pull request Dec 2, 2021
#### Problem

No action is taken if an `ObjectPool` is destroyed while objects
remain live. For the `BitMapObjectPool` case, such objects can't
be safely touched. For `HeapObjectPool` such objects can be used
but can't be released.

Some leaks have been fixed (project-chip#11983, project-chip#12031), but there are still
a few remaining.

Fixes project-chip#11880 _Possible use of destroyed pool objects_

#### Change overview

- Add an `ObjectPool` template argument specifying what to do if
  it is destroyed with live objects: abort with an error message
  (the default), release the live objects (which calls their
  destructors), or ignore the condition (transitionally, until
  all leaks are fixed).

- Fix shutdown ordering in `DeviceControllerSystemState`.

- For existing pools in `SessionManager`, `InteractionModelEngine`,
  and `GroupDataProviderImpl`, ignore the condition.

#### Testing

CI; no changes to functionality.
andy31415 pushed a commit that referenced this pull request Dec 4, 2021
* Catch or release ObjectPool leaks

#### Problem

No action is taken if an `ObjectPool` is destroyed while objects
remain live. For the `BitMapObjectPool` case, such objects can't
be safely touched. For `HeapObjectPool` such objects can be used
but can't be released.

Some leaks have been fixed (#11983, #12031), but there are still
a few remaining.

Fixes #11880 _Possible use of destroyed pool objects_

#### Change overview

- Add an `ObjectPool` template argument specifying what to do if
  it is destroyed with live objects: abort with an error message
  (the default), release the live objects (which calls their
  destructors), or ignore the condition (transitionally, until
  all leaks are fixed).

- Fix shutdown ordering in `DeviceControllerSystemState`.

- For existing pools in `SessionManager`, `InteractionModelEngine`,
  and `GroupDataProviderImpl`, ignore the condition.

#### Testing

CI; no changes to functionality.

* new uses in #12417
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.

4 participants