Go to file
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
.gitlab/issue_templates gitlab: Add a comment about disabling extension to the issue template 2022-12-15 19:07:08 +00:00
.gitlab-ci ci: Try falling back to stable branch before HEAD 2022-07-04 17:47:36 +02:00
.settings Clean out some eclipse artefacts 2019-02-13 04:39:26 +01:00
data quickSettings: Add background apps menu 2023-02-12 16:16:36 +00:00
docs/reference build: Replace deprecated meson functions 2021-12-23 15:52:21 +00:00
js status/network: Fix WirelessNetwork related leaks 2023-02-18 21:34:56 +00:00
lint lint: Transition to gjs' object spacing rule 2022-07-18 21:54:22 +00:00
man man: Update options 2020-12-28 02:25:17 +01:00
meson build: Use meson's gnome.post_install() 2021-12-23 15:52:21 +00:00
po Update Persian translation 2023-02-18 15:35:34 +00:00
src dateMenu: Use desktop action to open Evolution calendar 2023-02-12 20:14:02 +00:00
subprojects Bump version to 44.beta 2023-02-14 16:09:12 +01:00
tests Add 'headless start' perf test 2023-02-06 18:10:01 +00:00
tools/build tools: Drop gnome-shell-overrides-migration.sh 2023-01-23 16:38:36 +00:00
.eslintrc.yml init: Set console log domain 2021-09-01 14:55:47 +00:00
.gitignore dateMenu: Use desktop action to open Evolution calendar 2023-02-12 20:14:02 +00:00
.gitlab-ci.yml ci: Update base image 2023-01-31 12:54:19 +01:00
.gitmodules git: Always use libgnome-volume-control submodule from GNOME group 2022-08-04 18:31:16 +02:00
.jscheckignore init: Set console log domain 2021-09-01 14:55:47 +00:00
config.h.meson main: Prepend RPATH or RUNPATH paths to gir search paths 2022-11-25 22:09:37 +01:00
COPYING Changed obsolete FSF postal address. 2014-01-08 04:35:14 +07:00
gnome-shell.doap gnome-shell.doap: Make marge-bot a maintainer 2020-11-17 17:29:56 +00:00
HACKING.md *: Fix spelling mistakes found by codespell 2020-08-21 18:25:09 +00:00
meson_options.txt build: Default to soup3 2022-06-21 19:29:02 +00:00
meson.build Bump version to 44.beta 2023-02-14 16:09:12 +01:00
NEWS Bump version to 44.beta 2023-02-14 16:09:12 +01:00
README.md doc: Update contribution section 2022-12-06 01:49:24 +01:00

GNOME Shell

GNOME Shell provides core user interface functions for the GNOME desktop, like switching to windows and launching applications. GNOME Shell takes advantage of the capabilities of modern graphics hardware and introduces innovative user interface concepts to provide a visually attractive and easy to use experience.

For more information about GNOME Shell, including instructions on how to build GNOME Shell from source and how to get involved with the project, see the project wiki.

Bugs should be reported to the GNOME bug tracking system. Please refer to the Schedule wiki page to see the supported versions.

Contributing

To contribute, open merge requests at https://gitlab.gnome.org/GNOME/gnome-shell.

Commit messages should follow the GNOME commit message guidelines. If a merge request fixes an existing issue, it is good practice to append the full issue URL to each commit message. Try to always prefix commit subjects with a relevant topic, such as panel: or status/network:, and it's always better to write too much in the commit message body than too little.

Default branch

The default development branch is main. If you still have a local checkout under the old name, use:

git checkout master
git branch -m master main
git fetch
git branch --unset-upstream
git branch -u origin/main
git symbolic-ref refs/remotes/origin/HEAD refs/remotes/origin/main

License

GNOME Shell is distributed under the terms of the GNU General Public License, version 2 or later. See the COPYING file for details.