Find a file
Kate Hsuan 2ebaa01347 linux: up-device-supply-battery: Fix mem leak when refreshing battery info
The AC was plugged and unplugged repeatedly, and hit this leak in
up_device_supply_battery_refresh(). Four variables in UpBatteryInfo
need to be free.

...
<snip>
...
==2825085== 1,152 bytes in 9 blocks are definitely lost in loss record 1,851 of 1,865
==2825085==    at 0x484CE40: realloc (vg_replace_malloc.c:1801)
==2825085==    by 0x4916ADA: g_realloc (gmem.c:171)
==2825085==    by 0x4939E06: g_string_expand (gstring.c:82)
==2825085==    by 0x4939EA1: g_string_sized_new (gstring.c:113)
==2825085==    by 0x11262C: up_device_get_id (up-device.c:347)
==2825085==    by 0x113136: up_device_notify (up-device.c:241)
==2825085==    by 0x4A1B811: g_closure_invoke (gclosure.c:833)
==2825085==    by 0x4A4C0C1: signal_emit_unlocked_R.isra.0 (gsignal.c:3735)
==2825085==    by 0x4A3CCE8: signal_emit_valist_unlocked (gsignal.c:3534)
==2825085==    by 0x4A3CF71: g_signal_emit_valist (gsignal.c:3277)
==2825085==    by 0x4A3D033: g_signal_emit (gsignal.c:3597)
==2825085==    by 0x4A27C75: g_object_dispatch_properties_changed.lto_priv.0 (gobject.c:1827)
==2825085==
==2825085== LEAK SUMMARY:
==2825085==    definitely lost: 3,663 bytes in 333 blocks
==2825085==    indirectly lost: 0 bytes in 0 blocks
==2825085==      possibly lost: 960 bytes in 3 blocks
==2825085==    still reachable: 172,351 bytes in 2,205 blocks
==2825085==         suppressed: 0 bytes in 0 blocks
==2825085== Reachable blocks (those to which a pointer was found) are not shown.
==2825085== To see them, rerun with: --leak-check=full --show-leak-kinds=all
==2825085==
==2825085== For lists of detected and suppressed errors, rerun with: -s
==2825085== ERROR SUMMARY: 20 errors from 20 contexts (suppressed: 0 from 0)

Resolves: #305
2025-03-28 16:00:26 +08:00
.ci Reformat python code style with black 2025-01-08 14:01:34 +08:00
contrib contrib: setup: Install and setup pre-commit 2025-01-13 08:55:18 +00:00
data/zsh-completion add completions for CLI 2024-10-26 19:56:28 +00:00
dbus dbus: UPower.xml: Update GetCriticalAction Values 2025-02-06 10:46:33 +02:00
doc Fix spelling issues with codespell 2025-01-08 14:01:34 +08:00
etc etc/UPower.conf: fix "riscky" typo 2025-01-13 13:30:11 +08:00
libupower-glib Fix spelling issues with codespell 2025-01-08 14:01:34 +08:00
po Update LINGUAS 2025-01-17 02:11:22 +00:00
policy Revert "policy: Remove policy for removed features" 2024-08-22 14:20:33 +08:00
rules rules: 95-upower-hid.hwdb: update hwdb for HID devices 2025-03-25 17:08:40 +08:00
src linux: up-device-supply-battery: Fix mem leak when refreshing battery info 2025-03-28 16:00:26 +08:00
tools Revert "all: Remove Lid handling" 2024-01-26 14:57:27 +00:00
.git-blame-ignore-revs Ignore commits for tree wide changes 2025-01-08 16:54:58 +08:00
.gitconfig Ignore commits for tree wide changes 2025-01-08 16:54:58 +08:00
.gitlab-ci.yml ci: Add a pre-commit stage 2025-01-08 14:01:34 +08:00
.markdownlint.json ci: markdownlint: Add markdownlint to the pre-commit check 2025-01-08 13:59:50 +08:00
.pre-commit-config.yaml pre-commit-config: Remove deprecated default_stages "commit" 2025-01-13 08:55:18 +00:00
AUTHORS trivial: add my copyright 2008-09-06 11:12:24 +01:00
code-of-conduct.md Add code of conduct document 2019-07-25 12:08:15 +02:00
COMMITMENT Add COMMITMENT file as part of GPL Common Cure Rights Commitment 2018-06-18 16:11:43 +01:00
COPYING trivial: Rename a few 'DeviceKit-power' strings we missed 2010-05-28 15:00:07 +01:00
HACKING.md Ignore commits for tree wide changes 2025-01-08 16:54:58 +08:00
meson.build Bump the version for the next release 2025-01-09 13:55:45 +08:00
meson_options.txt add completions for CLI 2024-10-26 19:56:28 +00:00
NEWS Release 1.90.7 2025-01-09 13:47:51 +08:00
README.md README: Rename to README.md and fix markdown with markdownlint 2025-01-08 14:25:55 +08:00
RELEASE RELEASE: Update notes on how to do releases 2022-02-09 17:53:54 +01:00

UPower

Requirements:

  glib-2.0             >= 2.66.0
  gio-2.0              >= 2.16.1
  gudev-1.0            >= 235    (Linux)
  libimobiledevice-1.0 >= 0.9.7  (optional)
  polkit-gobject-1     >= 124

UPower is an abstraction for enumerating power devices, listening to device events and querying history and statistics. Any application or service on the system can access the org.freedesktop.UPower service via the system message bus.

Debugging

When doing bug reports, the following information can be useful:

  • grep . /sys/class/power_supply/*/*
    This includes the current kernel view of all power supplies in the system. It is always a good idea to include this information.
  • udevadm info -e
    This shows the hardware configuration and is relevant when e.g. the type of an external device is misdetected.
  • upower -d
    Shows upower's view of the state
  • upower --monitor-detail
    Dumps device information every time that a change happens. This helps with debugging dynamic issues.
  • udevadm monitor
    Dumps the udev/kernel reported hardware changes (and addition/removal). This is helpful when debugging dynamic issues, in particular if it is not clear whether the issue is coming from the kernel or upower.

In addition, it can also be useful to run upower in debug mode and post the logs. There are two ways of doing so:

  • Run upower daemon manually, you can do so using: sudo /usr/libexec/upowerd -rd
  • Modify the systemd service and restart. This is best done by:
    1. sudo systemctl edit upower.service

    2. Adding the two lines:

      [Service]
      Environment=G_MESSAGES_DEBUG=all
      
    3. sudo systemctl restart upower.service

    4. Grab logs using journalctl -u upower.service or similar