← Back to team overview

desktop-packages team mailing list archive

[Bug 569395] Re: Short-circuit in pm-utils hook can cause incorrect mixer state to be (re)stored

 

lucid has seen the end of its life and is no longer receiving any
updates. Marking the lucid task for this ticket as "Won't Fix".

** Changed in: pulseaudio (Ubuntu Lucid)
       Status: Fix Committed => Won't Fix

-- 
You received this bug notification because you are a member of Desktop
Packages, which is subscribed to pulseaudio in Ubuntu.
https://bugs.launchpad.net/bugs/569395

Title:
  Short-circuit in pm-utils hook can cause incorrect mixer state to be
  (re)stored

Status in pulseaudio package in Ubuntu:
  Fix Released
Status in pulseaudio source package in Lucid:
  Won't Fix

Bug description:
  -- Lucid SRU report follows --

  Impact: A short-circuit in PulseAudio's pm-utils hook to check for the
  ConsoleKit active seat when (re)storing sink and source states can
  result in the wrong states being stored. (This change was introduced
  for suspend-to-* and resume optimization.)

  Bug resolution: Prior to suspend-to-*, save all PA users' sink &
  source states and then mute only the active ConsoleKit seat's sink &
  source. After resume, restore all PA users' pre-suspend sink & source
  states. This change has been made in revision 292:
  http://bazaar.launchpad.net/~ubuntu-core-
  dev/pulseaudio/ubuntu.2a/revision/292?remember=284&compare_revid=284 .

  Minimal patch: http://bazaar.launchpad.net/%7Eubuntu-core-
  dev/pulseaudio/ubuntu.2a/diff/292/284?remember=284

  TEST CASE: Detailed below in the original defect report

  Regression potential: Suspend-to-* and resume will require
  [negligibly] more time. Otherwise, there are no identified
  regressions.

  -- Original defect report follows --

  Binary package hint: pulseaudio

  I noticed this the other day after accidentally going into "Switch
  User" mode: I had my own pulseaudio instance, and gdm had its own. I
  then suspending my machine, and upon resuming, sound was muted.

  The reason for this happening is due to a bug in the 01Pulseaudio pm-utils hook.
  1. First, it checks the status of gdm's pulseaudio, stores it, then mutes it.
  2. Then, it checks the status of my pulseaudio, stores it, and also mutes it. Due to #1, the sink is already muted, as both sinks were pointing to the same physical device. Hence, the stored states are as follows: gdm's sink is not muted, but mine is.

  Upon resuming:
  1. It reads gdm's state, and unmutes the sink.
  2. Then it reads my pulseaudio's saved state, and mutes the sink again.

  Result: The sink is muted after resuming from suspend.

  N.B.:
  This seems to be a corner case that only occurs when multiple pulseaudio instances are running, and both contain sinks pointing to the same underlying device. It can probably be fixed by changing the pm-utils hook order to read and store all the states of the sinks prior to muting them.

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/pulseaudio/+bug/569395/+subscriptions