gnome-shell/js/ui/status
Sebastian Keller feb1c57dde status/network: Fix WirelessNetwork related leaks
NetworkManager frequently refreshes the list of available access points.
For some reason this often ends up removing some or all access points
only to add them back in a later refresh later. With the exception of
the currently connected access point, which is never removed.

When all access points of a WirelessNetwork have been removed, it gets
destroyed by NMWirelessDeviceItem::_removeAccessPoint(). This however
does not happen for the currently connected network due to the always
present access point. If this network now happens to consist of multiple
access points, the "unused" NMAccessPoints will get removed and added
in these refreshes, without the WirelessNetwork getting destroyed.

Whenever such an unused access point is added, due to the use of signal
tracking this leaks the NMAccessPoint and SignalTracker until the
WirelessNetwork is destroyed.

However when the NMWirelessDeviceItem is destroyed, for example due to
suspending, it stops tracking access point changes, ensuring that the
condition for the WirelessNetwork being destroyed can not occur anymore.

Even with just two access points, such as can be found in 2.4GHz+5GHz
home routers this issue leaks hundreds of NMAccessPoints and
SignalTrackers per day. As well as a small number of WirelessNetworks
which are also kept alive by the SignalTrackers.

To fix this disconnect from the access point when it gets removed and
destroy all remaining networks when the NMWirelessDeviceItem is
destroyed.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2652>
2023-02-18 21:34:56 +00:00
..
accessibility.js a11y menu: Add "All Accessibility Settings" entry 2023-02-07 14:59:58 +00:00
autoRotate.js quickSettings: Rename 'label' property to 'title' 2023-02-04 14:50:36 -03:00
backgroundApps.js quickSettings: Add background apps menu 2023-02-12 16:16:36 +00:00
bluetooth.js status/bluetooth: Add device menu 2023-02-11 20:44:07 +00:00
brightness.js status/brightness: Port to quick settings 2022-08-03 12:41:05 +00:00
darkMode.js quickSettings: Rename 'label' property to 'title' 2023-02-04 14:50:36 -03:00
dwellClick.js cleanup: Use new indentation style for object literals 2022-02-23 12:23:52 +00:00
keyboard.js keyboard: Add "Keyboard Settings" menu entry 2023-01-13 16:05:25 +00:00
location.js status/location: Use better indicator icon 2022-08-19 09:44:57 +00:00
network.js status/network: Fix WirelessNetwork related leaks 2023-02-18 21:34:56 +00:00
nightLight.js quickSettings: Rename 'label' property to 'title' 2023-02-04 14:50:36 -03:00
powerProfiles.js status/powerProfiles: Set profile name as subtitle 2023-02-04 14:50:36 -03:00
remoteAccess.js status/remoteAccess: Don't override existing style classes 2022-11-18 18:50:43 +01:00
rfkill.js quickSettings: Rename 'label' property to 'title' 2023-02-04 14:50:36 -03:00
system.js status/system: Use a better icon in screenshot button 2023-02-09 17:26:25 +01:00
thunderbolt.js cleanup: Minimize deep_unpack() usage 2022-08-10 10:29:24 +00:00
volume.js status/volume: Unmute to default volume when at 0 2023-02-14 21:28:44 +00:00