[nas] nasd outputs only part of a sample, client stalls -- exceptunder strace

mmurray mmurray at deepthought.org
Mon Jul 23 06:54:00 MDT 2007


I've been trying to debug an identical situation, and have realized that
 the error only occurs with certain kernels. Specifically, running a
debian machine, 2.6.18-4-686 has no problems, whereas 2.6.21-2-686
hangs. I suspect this patch is the culprit:

http://ftp.kernel.org/pub/linux/kernel/people/akpm/patches/2.6/2.6.20/2.6.20-mm1/broken-out/hrtimers-prevent-possible-itimer-dos.patch

But, I have yet to be able to prove it. It was merged into the mainline
kernel with 2.6.21.

To the best of my reasoning, the SIGALRM is being lost in a race
somewhere. Is there a reason why its better to unblock and ignore the
alarm signal while in AuProcessData instead of stopping and restarting
the timer? This is all in auvoxware.c:intervalProc().

I'm having trouble following how the nasd event loop works. Are there
any decent notes on the structure of nasd? Does nasd try to anticipate
the exhaustion of the soundcard buffer with timers instead of relying on
completion notification from the sound card drivers?

Are the minfrag, maxfrag, and fragsize settings in the default nasd.conf
(with the amusingly ancient comment "for doom!") still most appropriate?

I've seen patches submitted on the list that use sigaction(2) under
linux instead of signal(2), any reason why it shouldn't be used?

Regards, Martin



More information about the Nas mailing list