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 CommissioningWindowManager DNS UDP leak #11983

Merged

Conversation

kpschoedel
Copy link
Contributor

Problem

chip::Server::Shutdown() contains

chip::Dnssd::ServiceAdvertiser::Instance().Shutdown();
    ⋮
mCommissioningWindowManager.Cleanup();

but the latter restarts Dnssd::ServiceAdvertiser.

Instance of #11880 Possible use of destroyed pool objects

Change overview

Add CommissioningWindowManager::Shutdown() which does not restart DNS.

Testing

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

#### Problem

`chip::Server::Shutdown()` contains

```
chip::Dnssd::ServiceAdvertiser::Instance().Shutdown();
    ⋮
mCommissioningWindowManager.Cleanup();
```

but the latter restarts `Dnssd::ServiceAdvertiser`.

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

#### Change overview

Add `CommissioningWindowManager::Shutdown()` which does not restart DNS.

#### Testing

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

github-actions bot commented Nov 18, 2021

PR #11983: Size comparison from ef6455d to c023f26

Increases (25 builds for efr32, esp32, k32w, linux, nrfconnect, p6, qpg, telink)
platform target config section ef6455d c023f26 change % change
efr32 lock-app BRD4161A (read only) 726984 727000 16 0.0
.text 726976 726992 16 0.0
esp32 all-clusters-app c3devkit (read only) 828536 828548 12 0.0
.flash.text 828536 828548 12 0.0
m5stack (read only) 899555 899587 32 0.0
.flash.text 894171 894203 32 0.0
k32w lighting-app k32w061+se05x+release (read/write) 706840 706856 16 0.0
.text 621964 621980 16 0.0
lock-app k32w061+debug (read/write) 598280 598296 16 0.0
.text 522924 522940 16 0.0
shell k32w061+debug (read/write) 663624 663640 16 0.0
.text 577172 577188 16 0.0
linux all-clusters-app debug (read only) 1726009 1726041 32 0.0
.text 1455394 1455426 32 0.0
bridge-app debug+rpc (read only) 1321037 1321069 32 0.0
.text 1111701 1111733 32 0.0
chip-tool debug (read only) 4985917 4985949 32 0.0
.text 4406949 4406981 32 0.0
lighting-app debug+rpc (read only) 1590161 1590193 32 0.0
.text 1325602 1325634 32 0.0
ota-provider-app debug (read only) 1268601 1268633 32 0.0
.text 1057058 1057090 32 0.0
ota-requestor-app debug (read only) 1354337 1354369 32 0.0
.text 1129394 1129426 32 0.0
tv-app debug (read only) 1872657 1872689 32 0.0
.text 1569634 1569666 32 0.0
nrfconnect lighting-app nrf52840dk_nrf52840 (read/write) 864563 864579 16 0.0
text 582568 582576 8 0.0
nrf52840dk_nrf52840+rpc (read/write) 826963 826979 16 0.0
text 556736 556744 8 0.0
nrf5340dk_nrf5340_cpuapp text 512040 512048 8 0.0
lock-app nrf52840dk_nrf52840 text 562660 562672 12 0.0
nrf5340dk_nrf5340_cpuapp (read/write) 765282 765298 16 0.0
text 492224 492236 12 0.0
pump-app nrf52840dk_nrf52840 text 566844 566852 8 0.0
pump-controller-app nrf52840dk_nrf52840 text 562280 562292 12 0.0
p6 all-clusters-app default (read/write) 2297936 2297952 16 0.0
.text 1256200 1256216 16 0.0
lock-app default (read/write) 2215424 2215440 16 0.0
.text 1173688 1173704 16 0.0
qpg lighting-app qpg6100+debug (read only) 493688 493704 16 0.0
.text 488368 488384 16 0.0
lock-app qpg6100+debug (read only) 468652 468668 16 0.0
.text 463332 463348 16 0.0
telink lighting-app tlsr9518adk80d (read/write) 767986 767994 8 0.0
text 533170 533182 12 0.0
Full report (38 builds for efr32, esp32, k32w, linux, mbed, nrfconnect, p6, qpg, telink)
platform target config section ef6455d c023f26 change % change
efr32 lighting-app BRD4161A (read only) 749928 749928 0 0.0
(read/write) 115540 115540 0 0.0
.bss 113740 113740 0 0.0
.data 1800 1800 0 0.0
.text 749920 749920 0 0.0
BRD4161A+rpc (read only) 737468 737468 0 0.0
(read/write) 132168 132168 0 0.0
.bss 130244 130244 0 0.0
.data 1924 1924 0 0.0
.text 737460 737460 0 0.0
lock-app BRD4161A (read only) 726984 727000 16 0.0
(read/write) 113324 113324 0 0.0
.bss 111564 111564 0 0.0
.data 1756 1756 0 0.0
.text 726976 726992 16 0.0
window-app BRD4161A (read only) 727968 727968 0 0.0
(read/write) 113644 113644 0 0.0
.bss 111884 111884 0 0.0
.data 1760 1760 0 0.0
.text 727960 727960 0 0.0
esp32 all-clusters-app c3devkit (read only) 828536 828548 12 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 828536 828548 12 0.0
.iram0.text 61394 61394 0 0.0
m5stack (read only) 899555 899587 32 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 894171 894203 32 0.0
.iram0.text 122943 122943 0 0.0
k32w lighting-app k32w061+se05x+release (read/write) 706840 706856 16 0.0
.bss 77164 77164 0 0.0
.data 1912 1912 0 0.0
.text 621964 621980 16 0.0
lock-app k32w061+debug (read/write) 598280 598296 16 0.0
.bss 67676 67676 0 0.0
.data 1880 1880 0 0.0
.text 522924 522940 16 0.0
shell k32w061+debug (read/write) 663624 663640 16 0.0
.bss 78804 78804 0 0.0
.data 1848 1848 0 0.0
.text 577172 577188 16 0.0
linux all-clusters-app debug (read only) 1726009 1726041 32 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 1455394 1455426 32 0.0
bridge-app debug+rpc (read only) 1321037 1321069 32 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 1111701 1111733 32 0.0
chip-tool debug (read only) 4985917 4985949 32 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 4406949 4406981 32 0.0
lighting-app debug+rpc (read only) 1590161 1590193 32 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 1325602 1325634 32 0.0
ota-provider-app debug (read only) 1268601 1268633 32 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 1057058 1057090 32 0.0
ota-requestor-app debug (read only) 1354337 1354369 32 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 1129394 1129426 32 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) 1872657 1872689 32 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 1569634 1569666 32 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) 2249392 2249392 0 0.0
.bss 171036 171036 0 0.0
.data 5568 5568 0 0.0
.heap 859840 859840 0 0.0
.text 1211992 1211992 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) 864563 864579 16 0.0
bss 110560 110560 0 0.0
rodata 95828 95828 0 0.0
text 582568 582576 8 0.0
nrf52840dk_nrf52840+rpc (read/write) 826963 826979 16 0.0
bss 106916 106916 0 0.0
rodata 87012 87012 0 0.0
text 556736 556744 8 0.0
nrf5340dk_nrf5340_cpuapp (read/write) 789618 789618 0 0.0
bss 111936 111936 0 0.0
rodata 91084 91084 0 0.0
text 512040 512048 8 0.0
lock-app nrf52840dk_nrf52840 (read/write) 839995 839995 0 0.0
bss 109584 109584 0 0.0
rodata 92300 92300 0 0.0
text 562660 562672 12 0.0
nrf5340dk_nrf5340_cpuapp (read/write) 765282 765298 16 0.0
bss 110996 110996 0 0.0
rodata 87604 87604 0 0.0
text 492224 492236 12 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) 846103 846103 0 0.0
bss 109724 109724 0 0.0
rodata 94008 94008 0 0.0
text 566844 566852 8 0.0
pump-controller-app nrf52840dk_nrf52840 (read/write) 839695 839695 0 0.0
bss 109620 109620 0 0.0
rodata 92256 92256 0 0.0
text 562280 562292 12 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) 2297936 2297952 16 0.0
.bss 112272 112272 0 0.0
.data 2520 2520 0 0.0
.heap 918552 918552 0 0.0
.text 1256200 1256216 16 0.0
lock-app default (read/write) 2215424 2215440 16 0.0
.bss 100896 100896 0 0.0
.data 2400 2400 0 0.0
.heap 930048 930048 0 0.0
.text 1173688 1173704 16 0.0
qpg lighting-app qpg6100+debug (read only) 493688 493704 16 0.0
(read/write) 114144 114144 0 0.0
.bss 50208 50208 0 0.0
.data 1008 1008 0 0.0
.text 488368 488384 16 0.0
lock-app qpg6100+debug (read only) 468652 468668 16 0.0
(read/write) 114140 114140 0 0.0
.bss 49152 49152 0 0.0
.data 964 964 0 0.0
.text 463332 463348 16 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) 767986 767994 8 0.0
bss 79072 79072 0 0.0
noinit 37160 37160 0 0.0
text 533170 533182 12 0.0

@Damian-Nordic Damian-Nordic merged commit beb6096 into project-chip:master Nov 22, 2021
@kpschoedel kpschoedel deleted the x7715-fix-commissioning branch November 25, 2021 16:58
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.

5 participants