From: bugtrack@alsa-project.org
To: alsa-devel@alsa-project.org
Subject: [ALSA - driver 0000557]: SNDCTL_DSP_GETOPTR not working correctly in specific situation
Date: Tue, 31 May 2005 15:54:12 +0200 [thread overview]
Message-ID: <ef7dcb84dafe695846b76e1e862e622b@bugtrack.alsa-project.org> (raw)
The following issue has been ASSIGNED.
======================================================================
<https://bugtrack.alsa-project.org/alsa-bug/view.php?id=557>
======================================================================
Reported By: minmax
Assigned To: perex
======================================================================
Project: ALSA - driver
Issue ID: 557
Category: CORE OSS - pcm
Reproducibility: always
Severity: minor
Priority: normal
Status: assigned
Distribution: Debian unstable
Kernel Version: vanilla 2.6.7
======================================================================
Date Submitted: 10-01-2004 16:18 CEST
Last Modified: 05-31-2005 15:54 CEST
======================================================================
Summary: SNDCTL_DSP_GETOPTR not working correctly in specific
situation
Description:
When the first few writes to the oss emulation device are done in specific
way, SNDCTL_DSP_GETOPTR returns wrongly huge results in info.bytes
======================================================================
----------------------------------------------------------------------
jdthood - 04-09-05 16:09
----------------------------------------------------------------------
Submitter: Does this bug still exist? Can you give more details about the
specific situation in which it appears?
----------------------------------------------------------------------
minmax - 04-09-05 16:22
----------------------------------------------------------------------
i've got new laptop since i reported this bug.
I've stumbled upon a bug when using Cinelerra (video editing software),
and since then i have patched the software to ignore the excessively wrong
results gotten from SNDCTL_DSP_GETOPTR
if(!ioctl(get_output(0), SNDCTL_DSP_GETOPTR, &info))
{
//printf("AudioOSS::device_position %d %d %d\n", info.bytes,
device->get_obits(), device->get_ochannels());
// workaround for ALSA OSS emulation driver's bug
// the problem is that if the first write to sound device was not full
lenght fragment then
// _GETOPTR returns insanely large numbers at first moments of play
if (info.bytes > 2100000000)
return 0;
else
return info.bytes /
(device->get_obits() / 8) /
device->get_ochannels();
}
----------------------------------------------------------------------
gk4 - 05-13-05 15:20
----------------------------------------------------------------------
We are seeing the same problem for ibmtts on Fedora Core 3 using Gnome
2.10.1 & gnome-speech 0.3.6. I would like to request increasing the
priority on this 8 month old bug because it is impacting accessibility on
Linux.
----------------------------------------------------------------------
perex - 05-13-05 15:24
----------------------------------------------------------------------
Can someone write a short program / test utility which triggers this bug?
----------------------------------------------------------------------
tiwai - 05-13-05 15:26
----------------------------------------------------------------------
Did you try the latest ALSA driver?
It's not clear which version causes this problem.
----------------------------------------------------------------------
gk4 - 05-13-05 19:35
----------------------------------------------------------------------
FC3 is using alsa-utils-1.0.6-3. Have you expclicitly fixed this problem
in a particular release?
----------------------------------------------------------------------
tiwai - 05-13-05 19:38
----------------------------------------------------------------------
It's not the alsa-utils but ALSA drivers in kernel.
I won't be surprised if it was already fixed in ALSA 1.0.9rc3 :)
----------------------------------------------------------------------
gk4 - 05-13-05 19:48
----------------------------------------------------------------------
I'm running FC3 with the 2.6.10-1.766_FC3 kernel. How can I determine
which level of ALSA the kernel is using?
----------------------------------------------------------------------
tiwai - 05-15-05 15:50
----------------------------------------------------------------------
Check /proc/asound/version.
----------------------------------------------------------------------
gk4 - 05-16-05 16:08
----------------------------------------------------------------------
My /proc/asound/version file has:
Advanced Linux Sound Architecture Driver Version 1.0.6 (Sun Aug 15
07:17:53 2004 UTC). Compiled on Feb 9 2005 for kernel 2.6.10-1.766_FC3.
----------------------------------------------------------------------
parente - 05-19-05 15:28
----------------------------------------------------------------------
I'm trying to test this on FC4 test 3 with alsa driver 1.0.9rc3. grep isn't
turning up the original lines reported as causing the problem so maybe
they've been removed. Can someone point me to the file where this
problematic code was originally located?
There's still a clipping problem using alsa with gnome speech. I'd like to
see if it's being caused by this same bug.
----------------------------------------------------------------------
minmax - 05-20-05 00:38
----------------------------------------------------------------------
parente: The code that i posted is an example of WORKAROUND for the bug.
not the code from alsa, but something an application writer can do to get
around of the bug in ALSA. I have not investigated where in ALSA the bug
actually lies.
----------------------------------------------------------------------
Roger Mach - 05-26-05 17:27
----------------------------------------------------------------------
Summary: Fixes bug 557: SNDCTL_DSP_GETOPTR not working correctly
This patch changes snd_pcm_oss_bytes() by adding a local variable
for the frames -> bytes conversion, which means that the frame count
is no longer corrupted by this conversion.
Signed-off-by: Roger Mach <bigmach@us.ibm.com>
--- alsa-kernel/core/oss/pcm_oss.c.orig 2005-05-24 09:13:47.000000000
-0700
+++ alsa-kernel/core/oss/pcm_oss.c 2005-05-24 09:11:40.000000000
-0700
@@ -124,11 +124,12 @@ int snd_pcm_plugin_append(snd_pcm_plugin
static long snd_pcm_oss_bytes(snd_pcm_substream_t *substream, long
frames)
{
+ long bytes = 0;
snd_pcm_runtime_t *runtime = substream->runtime;
snd_pcm_uframes_t buffer_size =
snd_pcm_lib_buffer_bytes(substream);
- frames = frames_to_bytes(runtime, frames);
+ bytes = frames_to_bytes(runtime, frames);
if (buffer_size == runtime->oss.buffer_bytes)
- return frames;
+ return bytes;
return (runtime->oss.buffer_bytes * frames) / buffer_size;
}
----------------------------------------------------------------------
perex - 05-27-05 10:56
----------------------------------------------------------------------
It seems like a wrong patch to me. We cannot mix frames with bytes (see
last expression). I think that there might be an overflow in the return
expression.
----------------------------------------------------------------------
perex - 05-27-05 11:04
----------------------------------------------------------------------
Ok, attached fix2.patch might fix this issue properly. Could you test it?
----------------------------------------------------------------------
parente - 05-27-05 15:41
----------------------------------------------------------------------
perex: The fix2.patch does not work on my system. It compiles, but refuses
to be inserted into the kernel with a "symbol error." (Probably because
int64 isn't recognized on my system?)
I also tried just casting to regular "int" but that does not solve the
problem. Output from gnome-speech is still clipped.
What about the patch submitted by Roger Mach? I can compile and install
it, and it appears to correct the problem without introducing others.
Maybe the last expression computes the number of bytes properly using the
number of frames?
----------------------------------------------------------------------
perex - 05-30-05 09:51
----------------------------------------------------------------------
Could you try 1.0.9 final? My patch is there and compilation should be
fixed.
----------------------------------------------------------------------
parente - 05-31-05 14:04
----------------------------------------------------------------------
perex: I can now compile and insert the module into the kernel on my
machine.
However, the clipping problem still remains. Considering that Roger Mach's
patch works, I do not believe this is an overflow problem. Rather, the bug
seems to stem from an incorrect calculation involving bytes instead of the
desired frames.
Issue History
Date Modified Username Field Change
======================================================================
10-01-04 16:18 minmax New Issue
10-01-04 16:18 minmax Distribution => Debian unstable
10-01-04 16:18 minmax Kernel Version => vanilla 2.6.7
10-02-04 10:52 minmax Issue Monitored: minmax
04-09-05 16:09 jdthood Note Added: 0004406
04-09-05 16:22 minmax Note Added: 0004410
05-13-05 15:20 gk4 Note Added: 0004646
05-13-05 15:24 perex Note Added: 0004647
05-13-05 15:26 tiwai Note Added: 0004648
05-13-05 19:35 gk4 Note Added: 0004651
05-13-05 19:38 tiwai Note Added: 0004652
05-13-05 19:48 gk4 Note Added: 0004655
05-15-05 15:50 tiwai Note Added: 0004663
05-16-05 16:08 gk4 Note Added: 0004676
05-19-05 15:28 parente Note Added: 0004693
05-20-05 00:38 minmax Note Added: 0004698
05-26-05 17:27 Roger Mach Note Added: 0004738
05-27-05 10:56 perex Note Added: 0004742
05-27-05 11:03 perex File Added: fix2.patch
05-27-05 11:04 perex Note Added: 0004743
05-27-05 15:41 parente Note Added: 0004752
05-30-05 09:51 perex Note Added: 0004798
05-31-05 14:04 parente Note Added: 0004831
05-31-05 15:54 perex Status new => assigned
05-31-05 15:54 perex Assigned To => perex
======================================================================
-------------------------------------------------------
This SF.Net email is sponsored by Yahoo.
Introducing Yahoo! Search Developer Network - Create apps using Yahoo!
Search APIs Find out how you can build Yahoo! directly into your own
Applications - visit http://developer.yahoo.net/?fr=offad-ysdn-ostg-q22005
next reply other threads:[~2005-05-31 13:54 UTC|newest]
Thread overview: 33+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-05-31 13:54 bugtrack [this message]
-- strict thread matches above, loose matches on Subject: below --
2005-08-09 11:46 [ALSA - driver 0000557]: SNDCTL_DSP_GETOPTR not working correctly in specific situation bugtrack
2005-05-31 16:06 bugtrack
2005-05-31 15:55 bugtrack
2005-05-31 15:53 bugtrack
2005-05-31 15:44 bugtrack
2005-05-31 15:39 bugtrack
2005-05-31 15:18 bugtrack
2005-05-31 15:14 bugtrack
2005-05-31 14:56 bugtrack
2005-05-31 14:55 bugtrack
2005-05-31 14:41 bugtrack
2005-05-31 14:10 bugtrack
2005-05-31 13:55 bugtrack
2005-05-31 12:04 bugtrack
2005-05-30 7:51 bugtrack
2005-05-27 13:41 bugtrack
2005-05-27 9:04 bugtrack
2005-05-27 8:56 bugtrack
2005-05-26 15:27 bugtrack
2005-05-19 22:38 bugtrack
2005-05-19 13:28 bugtrack
2005-05-16 14:08 bugtrack
2005-05-15 13:50 bugtrack
2005-05-13 17:48 bugtrack
2005-05-13 17:38 bugtrack
2005-05-13 17:35 bugtrack
2005-05-13 13:26 bugtrack
2005-05-13 13:24 bugtrack
2005-05-13 13:20 bugtrack
2005-04-09 14:22 bugtrack
2005-04-09 14:09 bugtrack
2004-10-01 14:18 bugtrack
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=ef7dcb84dafe695846b76e1e862e622b@bugtrack.alsa-project.org \
--to=bugtrack@alsa-project.org \
--cc=alsa-devel@alsa-project.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox