Comment 66 for bug 193578

Revision history for this message
Cory Davis (cory-d-davis) wrote :

This issue occurs for me on a fully upgraded Jaunty (9.04) whenever I drag a window. I have effects turned
completely off and have the window manager configured for "reduced_resources", which shows a dragging
window as a wireframe.

This on a new Core i7 920 (quad core) with 6GB of RAM, running a 1-tab firefox, a 2-tab gnome-terminal,
transmission with 3 torrents with a detail window open on one, and rhythmbox playing mp3s, so I'm reasonably
certain there is plenty of memory and cpu cycles to spare. The mp3 files are on a second hard drive, so
there should be no IO contention with the OS (and the drive light barely flickers).

I've verified that grabbing (not even moving) ANY of the window title bars will cause the audio to stop within
a couple of seconds - presumably when the buffer runs out. I do not have to be scrolling or doing anything
remotely cpu intensive to trigger the issue.

I've also verified that the cross-fading backend workaround solves the issue for me.

Possibly related, the terminal with a running `top` does not update until after I've let go of the window header.

While I have not looked at the source code, the symptoms are consistent with the audio buffering being done
in the graphical tool kit's main loop, which may get blocked by the presumably system modal operation of
moving a window, or delayed by intensive X operations such as heavy scrolling. I would expect that one of the
libraries involved then resyncs the audio to the system clock when operations resume, such as might
happen on a slow machine or heavy IO, leading to skipping rather than paused audio. I would guess that
the crossfading backend moves those operations to their own thread or process that does not get blocked by
GUI operations. Just my hypothesis based on the GUI programming I've done in the past.

System information:
$ head -7 /proc/meminfo
MemTotal: 6021412 kB
MemFree: 3152640 kB
Buffers: 837508 kB
Cached: 1178640 kB
SwapCached: 0 kB
Active: 881292 kB

$ lspci -nn | grep -e VGA -e Audio
00:1b.0 Audio device [0403]: Intel Corporation 82801JI (ICH10 Family) HD Audio Controller [8086:3a3e]
06:00.0 VGA compatible controller [0300]: ATI Technologies Inc RV770 [Radeon HD 4870] [1002:9440]
06:00.1 Audio device [0403]: ATI Technologies Inc HD48x0 audio [1002:aa30]

$ Xorg -version

X.Org X Server 1.6.0
Release Date: 2009-2-25
X Protocol Version 11, Revision 0
Build Operating System: Linux 2.6.24-15-server x86_64 Ubuntu
Current Operating System: Linux signum 2.6.28-11-generic #42-Ubuntu SMP Fri Apr 17 01:58:03 UTC 2009 x86_64
Build Date: 09 April 2009 02:11:54AM
xorg-server 2:1.6.0-0ubuntu14 (<email address hidden>)

$ pulseaudio --version |& tail -1
pulseaudio 0.9.14

$ rhythmbox --version
GNOME rhythmbox 0.12.0

$ /usr/X11R6/bin/fglrxinfo -v | grep version
OpenGL version string: 2.1.8664
glx server version string: 1.4
glx client version: 1.4

$ top

top - 00:42:38 up 1:56, 3 users, load average: 0.03, 0.04, 0.06
Tasks: 220 total, 1 running, 219 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.6%us, 0.2%sy, 0.0%ni, 98.8%id, 0.4%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 6021412k total, 2896604k used, 3124808k free, 851248k buffers
Swap: 10610892k total, 0k used, 10610892k free, 1192572k cached

  PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
 4222 corydd 20 0 1084m 316m 32m S 0 5.4 15:35.79 firefox
 3441 root 20 0 856m 181m 24m S 1 3.1 5:13.91 Xorg
 8953 corydd 20 0 860m 63m 27m S 2 1.1 0:42.04 rhythmbox
 4112 corydd 20 0 343m 26m 15m S 0 0.5 0:03.89 gnome-panel
 6421 corydd 20 0 299m 26m 12m S 1 0.5 0:51.66 transmission
 4153 corydd 20 0 289m 19m 11m S 0 0.3 0:00.23 mixer_applet2
 4116 corydd 20 0 415m 18m 13m S 0 0.3 0:00.94 nautilus
 4123 corydd 20 0 211m 18m 9000 S 0 0.3 0:01.25 python
 7705 corydd 20 0 196m 18m 10m S 0 0.3 0:03.28 gnome-terminal