[CM] Re: Re: DAC Size (Snd-8.5)

Kjetil S. Matheussen k.s.matheussen@notam02.no
Wed, 15 Nov 2006 07:12:04 +0100 (CET)

Esben Stien:
> "Kjetil S. Matheussen" <k.s.matheussen@notam02.no> writes:
>> Did you by any chance upgrade snd the last two weeks?
> No, that's the strange part.
>> can you try an earlier version?
> I even went back to Snd-8.1, but still the same. It's so weird, cause
> all my other JACK applications runs fine and I run almost the whole
> list;). The even weirder part is the Snd-8.1 used to work fine, but
> now, whenever I try to play anything in Snd, it freezes the whole
> system up while playing and the sound filled with dropouts.
>> I did a very small change in the jack code for about two weeks ago
> It can't be that;).
>> ask on the linux-audio-user list.
> The message indicates that Snd is asking for a priority higher than
> what I'm allowed to set it to, according to Paul Davis. He also

If you are using pam, rtprio should be 100 in /etc/security/limits.conf
I don't know whats the point of setting it lower which I have seen at 
least one distribution do.

> wonders why Snd is running its own watchdog.
When playing, the jack code sets snd to run with realtime priority.
Its an imorral thing to do, but it sometimes does a wonderful job of 
avoiding dropouts.

> I've seen this message before, I believe, and I don't really think
> it's related, but what realtime priority is Snd asking for?.

Reading the code, I think Snd runs at 1 and the watchdog at 99. (That 
should probably be changed, I guess, the watcdog only needs to run at 2)

Now I also see that snd will not run realtime unless the watchdog is 
running, so thats probably your problem.

So as a quick fix, apply the following patch:

--- audio_old.c 2006-11-15 07:09:00.000000000 +0100
+++ audio.c     2006-11-15 07:09:32.000000000 +0100
@@ -8512,7 +8512,7 @@
  static void *jack_mus_audio_watchdog(void *arg){
    struct sched_param par;

-  par.sched_priority = sched_get_priority_max(SCHED_RR);
+  par.sched_priority = sched_get_priority_min(SCHED_RR)+2;
      fprintf(stderr,"SNDLIB: Unable to set SCHED_RR realtime priority for the watchdog thread. No watchdog.\n");
      goto exit;

(You should fix your pam settings as well though...)

> I've now tested with ALSA, but I don't think I've ever run Snd with
> ALSA. It gives me:
> Illegal argument: default: cannot set buffer size to 3 periods of 1
> frames; total requested buffer size is 3 frames, minimum allowed is 7,
> maximum is -2095944041
> I have RME Multiface II.
> This is an unrelated problem, however.
> Only thing I can think of now, that I've upgraded, is the kernel, but
> I doubt it. I'm running 2.6.18-rt1

Well, its likely that you get the dropouts because you don't run realtime 
anymore, and that could be because of something with the new kernel.