lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <s5hab2zc18e.wl%tiwai@suse.de>
Date:	Mon, 20 Jul 2009 08:33:37 +0200
From:	Takashi Iwai <tiwai@...e.de>
To:	Piotr Kaczuba <piotr@...ika.ath.cx>
Cc:	linux-kernel@...r.kernel.org
Subject: Re: [ALSA] emu10k1: hw_ptr skipping when unpausing mplayer

At Sat, 18 Jul 2009 16:07:07 +0000 (UTC),
Piotr Kaczuba wrote:
> 
> Since 2.6.30 I'm experiencing sound and video stuttering when unpausing 
> mplayer. The soundcard is an Audigy 1, driver is emu10k1. Kernel is 
> x86_64, userspace is 32-bit. I doesn't happen always, but regularly 
> enough.

To be sure -- isn't it arch-independent?  I guess 64bit user-space
can cause the same problem.

> 
> 
> Below is the ouput of mplayer:
> 
> [AO_ALSA] alsa-lib: pcm.c:6482:(snd_pcm_mmap_commit) commit offset (8886) 
> doesn't match with appl_ptr (139955) % buf_size (16384)
> [AO_ALSA] Write error: Broken pipe
> [AO_ALSA] Trying to reset soundcard.
> [AO_ALSA] alsa-lib: pcm_hw.c:578:(snd_pcm_hw_prepare) 
> SNDRV_PCM_IOCTL_PREPARE failed: Device or resource busy
> [AO_ALSA] alsa-lib: pcm_hw.c:578:(snd_pcm_hw_prepare) 
> SNDRV_PCM_IOCTL_PREPARE failed: Device or resource busy
> [AO_ALSA] alsa-lib: pcm_hw.c:578:(snd_pcm_hw_prepare) 
> SNDRV_PCM_IOCTL_PREPARE failed: Device or resource busy
> [AO_ALSA] pcm prepare error: Device or resource busy

Hm, these errors in snd_pcm_hw_prepare look different.
Maybe it's a bug in libao, but needs more investigation.


> After setting xrun_debug to 5 I get the following in the log:
> 
> PCM: hw_ptr skipping! [Q] (pos=3071, delta=17225, period=1024, 
> jdelta=18/358/0)
> Pid: 0, comm: swapper Not tainted 2.6.30.1-orbiter.x86-64.1 #1
> Call Trace:
>  <IRQ>  [<ffffffffa02d7c7f>] ? snd_pcm_period_elapsed+0x4df/0x520 
> [snd_pcm]
>  [<ffffffffa031f15f>] ? snd_emu10k1_interrupt+0x25f/0x550 [snd_emu10k1]
>  [<ffffffff8023a9ba>] ? run_timer_softirq+0x1a/0x250
>  [<ffffffff80268e99>] ? handle_IRQ_event+0x39/0xe0
>  [<ffffffff8026ad19>] ? handle_fasteoi_irq+0x79/0x110
>  [<ffffffff8020dd17>] ? handle_irq+0x17/0x20
>  [<ffffffff8020d7c1>] ? do_IRQ+0x51/0xd0
>  [<ffffffff8020bd13>] ? ret_from_intr+0x0/0x9
>  <EOI>  [<ffffffff8021bea0>] ? lapic_next_event+0x0/0x20
>  [<ffffffff802127aa>] ? default_idle+0x3a/0x40
>  [<ffffffff8020a017>] ? cpu_idle+0x47/0xa0
>  [<ffffffff805a5aba>] ? start_kernel+0x2c3/0x384
>  [<ffffffff805a5373>] ? x86_64_start_kernel+0xe1/0xf2
> PCM: hw_ptr skipping! (pos=5482, delta=3434, period=1024, jdelta=50/71)
> Pid: 2870, comm: mplayer Not tainted 2.6.30.1-orbiter.x86-64.1 #1
> Call Trace:
>  [<ffffffffa02d6bd3>] ? snd_pcm_update_hw_ptr+0x1d3/0x220 [snd_pcm]
>  [<ffffffffa02d211d>] ? snd_pcm_hwsync+0x9d/0xe0 [snd_pcm]
>  [<ffffffffa02d54e3>] ? snd_pcm_ioctl_compat+0x753/0x980 [snd_pcm]
>  [<ffffffff80209b36>] ? __switch_to+0x226/0x270
>  [<ffffffff80475407>] ? thread_return+0x30/0x1f9
>  [<ffffffff8024a032>] ? hrtimer_cancel+0x12/0x20
>  [<ffffffff80476710>] ? do_nanosleep+0x30/0xb0
>  [<ffffffff8024a0e0>] ? hrtimer_nanosleep+0xa0/0x130
>  [<ffffffff802ddd8b>] ? compat_sys_ioctl+0x19b/0x3e0
>  [<ffffffff8024d3bb>] ? getnstimeofday+0x5b/0xe0
>  [<ffffffff80266b56>] ? audit_syscall_entry+0x166/0x190
>  [<ffffffff80227266>] ? cstar_dispatch+0x7/0x26
> PCM: hw_ptr skipping! [Q] (pos=7443, delta=5395, period=1024, 
> jdelta=91/112/2)
> Pid: 2870, comm: mplayer Not tainted 2.6.30.1-orbiter.x86-64.1 #1
> Call Trace:
>  <IRQ>  [<ffffffffa02d7c7f>] ? snd_pcm_period_elapsed+0x4df/0x520 
> [snd_pcm]
>  [<ffffffffa031f15f>] ? snd_emu10k1_interrupt+0x25f/0x550 [snd_emu10k1]
>  [<ffffffff80268e99>] ? handle_IRQ_event+0x39/0xe0
>  [<ffffffff8022cd9d>] ? try_to_wake_up+0x14d/0x160
>  [<ffffffff8026ad19>] ? handle_fasteoi_irq+0x79/0x110
>  [<ffffffff8020dd17>] ? handle_irq+0x17/0x20
>  [<ffffffff8020d7c1>] ? do_IRQ+0x51/0xd0
>  [<ffffffff8020bd13>] ? ret_from_intr+0x0/0x9
>  [<ffffffff8021bea0>] ? lapic_next_event+0x0/0x20
>  [<ffffffff802354bd>] ? __do_softirq+0x3d/0xf0
>  [<ffffffff8020c2ea>] ? call_softirq+0x1a/0x30
>  [<ffffffff8020dcbd>] ? do_softirq+0x2d/0x70
>  [<ffffffff802352a5>] ? irq_exit+0x85/0xa0
>  [<ffffffff8021c74e>] ? smp_apic_timer_interrupt+0x4e/0x80
>  [<ffffffff8020be63>] ? apic_timer_interrupt+0x13/0x20
>  <EOI>  [<ffffffffa02d20d9>] ? snd_pcm_hwsync+0x59/0xe0 [snd_pcm]
>  [<ffffffffa02d211d>] ? snd_pcm_hwsync+0x9d/0xe0 [snd_pcm]
>  [<ffffffffa02d54e3>] ? snd_pcm_ioctl_compat+0x753/0x980 [snd_pcm]
>  [<ffffffff80209b36>] ? __switch_to+0x226/0x270
>  [<ffffffff80475407>] ? thread_return+0x30/0x1f9
>  [<ffffffff8024a032>] ? hrtimer_cancel+0x12/0x20
>  [<ffffffff80476710>] ? do_nanosleep+0x30/0xb0
>  [<ffffffff8024a0e0>] ? hrtimer_nanosleep+0xa0/0x130
>  [<ffffffff802ddd8b>] ? compat_sys_ioctl+0x19b/0x3e0
>  [<ffffffff8024d3bb>] ? getnstimeofday+0x5b/0xe0
>  [<ffffffff80266b56>] ? audit_syscall_entry+0x166/0x190
>  [<ffffffff80227266>] ? cstar_dispatch+0x7/0x26
> 
> The log is virtually flooded with these messages until I interrupt 
> mplayer.

It's endless because the reset failed in the above.

The problem is likely due to some wrong operation in the pause/restart.
Does the patch below work around a problem?

If this works (somehow, not causing the same error), we can focus more
on the pause implementation of emu10k1.


thanks,

Takashi

---
diff --git a/sound/pci/emu10k1/emupcm.c b/sound/pci/emu10k1/emupcm.c
index 55b83ef..ae405a4 100644
--- a/sound/pci/emu10k1/emupcm.c
+++ b/sound/pci/emu10k1/emupcm.c
@@ -953,7 +953,7 @@ static struct snd_pcm_hardware snd_emu10k1_playback =
 	.info =			(SNDRV_PCM_INFO_MMAP | SNDRV_PCM_INFO_INTERLEAVED |
 				 SNDRV_PCM_INFO_BLOCK_TRANSFER |
 				 SNDRV_PCM_INFO_RESUME |
-				 SNDRV_PCM_INFO_MMAP_VALID | SNDRV_PCM_INFO_PAUSE),
+				 SNDRV_PCM_INFO_MMAP_VALID /*| SNDRV_PCM_INFO_PAUSE*/),
 	.formats =		SNDRV_PCM_FMTBIT_U8 | SNDRV_PCM_FMTBIT_S16_LE,
 	.rates =		SNDRV_PCM_RATE_CONTINUOUS | SNDRV_PCM_RATE_8000_96000,
 	.rate_min =		4000,
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ