From owner-freebsd-current@FreeBSD.ORG Mon Dec 22 19:07:27 2003 Return-Path: Delivered-To: freebsd-current@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 4125F16A4CE for ; Mon, 22 Dec 2003 19:07:27 -0800 (PST) Received: from smtp.mho.com (smtp.mho.net [64.58.4.6]) by mx1.FreeBSD.org (Postfix) with SMTP id C8EEE43D58 for ; Mon, 22 Dec 2003 19:07:24 -0800 (PST) (envelope-from scottl@freebsd.org) Received: (qmail 85383 invoked by uid 1002); 23 Dec 2003 03:07:24 -0000 Received: from unknown (HELO freebsd.org) (64.58.1.252) by smtp.mho.net with SMTP; 23 Dec 2003 03:07:24 -0000 Message-ID: <3FE7B115.8030808@freebsd.org> Date: Mon, 22 Dec 2003 20:05:57 -0700 From: Scott Long User-Agent: Mozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.5) Gecko/20031103 X-Accept-Language: en-us, en MIME-Version: 1.0 To: Robert Watson References: In-Reply-To: Content-Type: text/plain; charset=us-ascii; format=flowed Content-Transfer-Encoding: 7bit cc: current@freebsd.org Subject: Re: Looping sound output from pcm X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.1 Precedence: list List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 23 Dec 2003 03:07:27 -0000 Robert Watson wrote: > I ran aim after a recent kernel update, and had a rather odd problem. I > got an instant message from someone which resulted in a "ding" from aim. > However, the ding never stopped dinging -- the sample repeated over and > over again, and continues as I type. Even after the aim process exited. > Sending additional sound output didn't make it go away either. KDE/arts, > etc, don't seem to be involved in the problem, so it really seems like the > kernel is looping the sample. When I try to unload pcm, I get: > > pcm0: unregister: channel pcm0:play:2 busy (pid 965) > > And there's no pid 965. > > paprika# cat /dev/sndstat > FreeBSD Audio Driver (newpcm) > Installed devices: > pcm0: at io 0xd800 irq 5 (4p/1r/0v channels duplex default) > > Any suggestions welcome; in the mean time, I'll just listen to it ding > away ad naueseum. > > Robert N M Watson FreeBSD Core Team, TrustedBSD Projects > robert@fledge.watson.org Senior Research Scientist, McAfee Research > As was pointed out, this is probably an interrupt problem. The sound hardware should have interrupted the driver to say that it was almost done playing what was in the _ring_ buffer, and the driver should have responded by either filling the buffer with new data, or turning off the hardware. Instead, the hardware just kept on doing what it was designed to do: keep on playing through the ring buffer. The same thing would have happened if the OS had crashed while a sample was playing. The maestro3 driver is growing more stale over time. I no longer have any hardware to deal with it though. If anyone knows where I can get an Maestro3 or Allegro-1 PCI card, I'll gladly buy it and fix start working on the driver again. Try playing something else to see if the interrupt loss was transient. You can do something as easy as just cat a file into /dev/dsp0. Scott