indicator-session-service crashed with SIGSEGV in dbus_upower_get_can_suspend()

Bug #1061844 reported by Ries
52
This bug affects 6 people
Affects Status Importance Assigned to Milestone
Session Menu
Fix Committed
Medium
Charles Kerr
indicator-session (Ubuntu)
Fix Released
Medium
Unassigned

Bug Description

[Impact]

 * indicator-session-service crashes, so session menu clicks won't be processed.

 * The crash is being caused by a race condition where the upower proxy is used
   before it's been created. The fix is to wrap the upower proxy use inside a
   "if (upower_proxy != NULL) {...}" block. Only the code directly querying
   the upower proxy is moved into the block.

[Test Case]

 * There's no straightforward way to replicate the race condition needed
   to trigger this crash. indicator-session-service asynchronously creates
   a upower proxy on the system bus. The crash occurs iff the menuitems need
   to get refreshed before the bus returns the upower proxy.

[Regression Potential]

 * IMO the regression risk is low because of the narrow scope of the change.

[Other info]

 * This bug was introduced in indicator-session 12.10.4, released on Oct 3.
   P and earlier releases of Q aren't affected.

----

no status bar

ProblemType: Crash
DistroRelease: Ubuntu 12.10
Package: indicator-session 12.10.4-0ubuntu1
ProcVersionSignature: Ubuntu 3.5.0-16.25-generic 3.5.4
Uname: Linux 3.5.0-16-generic x86_64
ApportVersion: 2.6.1-0ubuntu1
Architecture: amd64
Date: Thu Oct 4 21:41:56 2012
ExecutablePath: /usr/lib/indicator-session/indicator-session-service
InstallationMedia: Ubuntu 11.04 "Natty Narwhal" - Release amd64 (20110427)
ProcCmdline: /usr/lib/indicator-session/indicator-session-service
SegvAnalysis:
 Segfault happened at: 0x417249: mov (%rbx),%rdi
 PC (0x00417249) ok
 source "(%rbx)" (0x00000000) not located in a known VMA region (needed readable region)!
 destination "%rdi" ok
SegvReason: reading NULL VMA
Signal: 11
SourcePackage: indicator-session
StacktraceTop:
 ?? ()
 ?? ()
 ?? ()
 ?? ()
 __libc_start_main () from /lib/x86_64-linux-gnu/libc.so.6
Title: indicator-session-service crashed with SIGSEGV in __libc_start_main()
UpgradeStatus: Upgraded to quantal on 2012-10-02 (1 days ago)
UserGroups:

Related branches

Revision history for this message
Ries (riesvdam) wrote :
Revision history for this message
Apport retracing service (apport) wrote :

StacktraceTop:
 dbus_upower_get_can_suspend (object=0x0) at dbus-upower.c:1086
 on_upower_properties_changed (mgr=mgr@entry=0x1d19860) at session-menu-mgr.c:254
 session_menu_mgr_new (session_dbus=<optimized out>, greeter_mode=1) at session-menu-mgr.c:1195
 main (argc=<optimized out>, argv=<optimized out>) at session-service.c:89

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 indicator-session (Ubuntu):
importance: Undecided → Medium
summary: - indicator-session-service crashed with SIGSEGV in __libc_start_main()
+ indicator-session-service crashed with SIGSEGV in
+ dbus_upower_get_can_suspend()
tags: removed: need-amd64-retrace
Revision history for this message
Launchpad Janitor (janitor) wrote :

Status changed to 'Confirmed' because the bug affects multiple users.

Changed in indicator-session (Ubuntu):
status: New → Confirmed
Revision history for this message
Charles Kerr (charlesk) wrote :

Looks like this was introduced in http://bazaar.launchpad.net/~indicator-applet-developers/indicator-session/trunk.12.10/revision/363 for i-session 12.10.4, written by Ted and approved by both Lars and Charles. We *ALL* have blame in this one! :)

Changed in indicator-session:
importance: Undecided → Medium
status: New → In Progress
assignee: nobody → Charles Kerr (charlesk)
milestone: none → 12.10.5
visibility: private → public
Charles Kerr (charlesk)
description: updated
Changed in indicator-session:
status: In Progress → Fix Committed
tags: added: running-unity
Revision history for this message
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package indicator-session - 12.10.5daily13.01.25-0ubuntu1

---------------
indicator-session (12.10.5daily13.01.25-0ubuntu1) raring; urgency=low

  [ Mathieu Trudel-Lapierre ]
  * debian/rules:
    - Add DPKG_GENSYMBOLS_CHECK_LEVEL=4.
    - Use the dh sequencer with autoreconf.
    - Override dh_autoreconf to run autogen.sh.
  * debian/control:
    - Add dh-autoreconf to Build-Depends.
    - Add gnome-common to Build-Depends.
    - Add libgtest-dev, libdbustest1-dev, dbus-test-runner to Build-Depends.
    - Adjust style to be consistent and use trailing commas in lists.
    - Update Vcs-Bzr and Vcs-Browser fields and add notice for uploaders.
    - Remove libpackagekit-glib2-dev and libpolkit-gobject-1-dev
      from Build-Depends. (LP: #1085100)
    - Remove packagekit from Recommends
    - Add XS-Testsuite: autopkgtest.
    - Add libxorg-gtest-dev to Build-Depends.
  * debian/tests:
    - Add start-service test; verify that the indicator can be started from
      DBUS.
    - Add debian/tests/control.
  * Automatic snapshot from revision 373 (bootstrap):
    - Check to make sure that create_display_proxy() succeeded before using the
      proxy pointer that gets returned. (LP: #1078119)
    - Don't lock the session when clicking on the current user. (LP: #1024392)
    - Hide 'start screen saver' action, if it's locked down. (LP: #1066825)
    - Use the same icons in the greeter as in the user session (LP: #1049244)
    - Test upower_proxy for NULL before using it. (LP: #1061844)
  * Move TestCanStartService into a separate make target "localcheck"; so that
    the other tests can successfully run, and this one be used as an
    integration check.
  * debian/control: temporarily comment out the XS-Testsuite entry to disable
    autopkgtest until the tests really work properly.

  [ Sebastien Bacher ]
  * debian/control:
    - clean deprecated Build-Depends on gconf and dbusglib

  [ Didier Roche ]
  * run tests not under fakeroot for dbus tests (which don't seem to be able to
    run easily under dbus-test-runner)

  [ Charles Kerr ]
  * Tests hanging (LP: #1074065)
  * User-switching item is blank if there's no display name (LP:
    #1076271)
  * unnecessary dependencies on polkit and packagekit (LP: #1085100)

  [ Robert Ancell ]
  * Replace dbus-glib with GDBus (LP: #1084756)

  [ Automatic PS uploader ]
  * Automatic snapshot from revision 382
 -- Automatic PS uploader <email address hidden> Fri, 25 Jan 2013 02:01:17 +0000

Changed in indicator-session (Ubuntu):
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.