MATE power statistics crashed

Bug #1428337 reported by Martin Wimpress 
10
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Upower
Fix Released
Medium
mate-power-manager (Ubuntu)
Invalid
Medium
Unassigned
upower (Debian)
Fix Released
Unknown
upower (Ubuntu)
Fix Released
High
Martin Pitt

Bug Description

MATE Power Statistics will crash. Just click between a few tabs and power sources and it will soon die :(

ProblemType: Crash
DistroRelease: Ubuntu 15.04
Package: mate-power-manager 1.8.1+dfsg1-3
ProcVersionSignature: Ubuntu 3.19.0-7.7-generic 3.19.0
Uname: Linux 3.19.0-7-generic x86_64
ApportVersion: 2.16.2-0ubuntu1
Architecture: amd64
CurrentDesktop: MATE
Date: Wed Mar 4 21:26:28 2015
ExecutablePath: /usr/bin/mate-power-statistics
InstallationDate: Installed on 2015-03-04 (0 days ago)
InstallationMedia: Ubuntu-MATE 15.04 "Vivid Vervet" - Alpha amd64 (20150304)
ProcCmdline: /usr/bin/mate-power-statistics --device /org/freedesktop/UPower/devices/battery_BAT0
ProcEnviron:
 LANGUAGE=en_GB:en
 PATH=(custom, no user)
 XDG_RUNTIME_DIR=<set>
 LANG=en_GB.UTF-8
 SHELL=/bin/bash
SegvAnalysis: Skipped: missing required field "Disassembly"
Signal: 11
SourcePackage: mate-power-manager
UpgradeStatus: No upgrade log present (probably fresh install)
UserGroups: adm cdrom dip lpadmin plugdev sambashare sudo

Revision history for this message
Martin Wimpress  (flexiondotorg) wrote :
information type: Private → Public
Revision history for this message
Apport retracing service (apport) wrote :

StacktraceTop:
 g_variant_unref (value=0x3) at /build/buildd/glib2.0-2.43.90/./glib/gvariant-core.c:625
 up_device_get_statistics_sync (device=0x7f7734017770, type=0x40e146 "discharging", cancellable=0x7f7743fa12f9 <up_device_get_statistics_sync+313>, cancellable@entry=0x0, error=0x0) at up-device.c:560
 gpm_stats_update_info_page_stats (device=0x7f7734017770) at gpm-statistics.c:708
 gpm_stats_update_info_data_page (device=device@entry=0x7f7734017770, page=<optimized out>) at gpm-statistics.c:759
 gpm_stats_update_info_data (device=device@entry=0x7f7734017770) at gpm-statistics.c:806

Revision history for this message
Apport retracing service (apport) wrote : Stacktrace.txt
Revision history for this message
Apport retracing service (apport) wrote : StacktraceSource.txt
Revision history for this message
Apport retracing service (apport) wrote : ThreadStacktrace.txt
Changed in mate-power-manager (Ubuntu):
importance: Undecided → Medium
tags: removed: need-amd64-retrace
Revision history for this message
Martin Wimpress  (flexiondotorg) wrote :

The following snippet is the patch confirmed by Fedora as fixing this issue.

  * http://paste.fedoraproject.org/192697/42539076/

Changed in ubuntu-mate:
status: New → Triaged
Revision history for this message
Martin Wimpress  (flexiondotorg) wrote :

The bug is actually in upower.

Changed in mate-power-manager (Ubuntu):
status: New → Invalid
Changed in gnome-power-manager (Debian):
status: Unknown → Incomplete
Changed in gnome-power-manager (Debian):
status: Incomplete → New
Revision history for this message
In , Jason Gerecke (killertofu) wrote :

Created attachment 114095
Patch to fix issue

If the command `upower -d` is run while a device with no history is attached, the command can crash with a segfault.

Relevant backtrace when compiled from the master branch (f3706d7) with debugging:

Program received signal SIGSEGV, Segmentation fault.
0x00007ffff76d8444 in g_variant_unref () from /usr/lib/libglib-2.0.so.0
(gdb) bt
#0 0x00007ffff76d8444 in g_variant_unref () from /usr/lib/libglib-2.0.so.0
#1 0x00007ffff7bc27b2 in up_device_get_history_sync (device=0x7ffff0003c70,
    type=0x7ffff7bd23af "charge", timespec=120, resolution=10, cancellable=0x0,
    error=0x0) at up-device.c:484
#2 0x00007ffff7bc192d in up_device_to_text_history (device=0x7ffff0003c70,
    string=0x7ffff0001920, type=0x7ffff7bd23af "charge") at up-device.c:194
#3 0x00007ffff7bc2391 in up_device_to_text (device=0x7ffff0003c70)
    at up-device.c:375
#4 0x0000000000401d14 in main (argc=1, argv=0x7fffffffe748) at up-tool.c:321
(gdb)

This appears to be caused by the fact that if the call to 'up_device_glue_call_get_history_sync' within the 'up_device_get_history_sync' function fails, the 'gva' variable will be left uninitialized. The function later tries to call 'g_variant_unref' on it and fails.

A patch which initializes 'gva' to NULL is attached and resolves the issue for me. A similar fix may also be needed for the 'up_device_get_statistics_sync' function (which follows the same pattern of leaving 'gva' uninitialized).

Revision history for this message
In , Martin Pitt (pitti) wrote :

*** Bug 89514 has been marked as a duplicate of this bug. ***

affects: gnome-power-manager (Debian) → upower (Debian)
Changed in upower:
importance: Undecided → Unknown
status: New → Unknown
Revision history for this message
In , Martin Pitt (pitti) wrote :

I came here from a downstream report/patch, so I didn't take your patch, sorry.

Fixed in master now:

http://cgit.freedesktop.org/upower/commit/?id=2510148b16

Thanks!

Revision history for this message
Martin Pitt (pitti) wrote :

Fixed upstream now, will upload to Debian and sync ASAP.

affects: ubuntu-mate → upower (Ubuntu)
Changed in upower (Ubuntu):
assignee: nobody → Martin Pitt (pitti)
importance: Undecided → High
status: Triaged → Fix Committed
Changed in upower:
importance: Unknown → Medium
status: Unknown → Fix Released
Changed in upower (Debian):
status: New → Confirmed
Revision history for this message
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package upower - 0.99.2-2

---------------
upower (0.99.2-2) experimental; urgency=medium

  * libupower: Fix crash due to uninitialized GVariant. (Closes: #774546,
    LP: #1428337)

 -- Martin Pitt <email address hidden> Fri, 13 Mar 2015 15:59:59 +0100

Changed in upower (Ubuntu):
status: Fix Committed → Fix Released
Changed in upower (Debian):
status: Confirmed → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.