« Return to Thread: Muse and JackActivationCount errors

Re: Muse and JackActivationCount errors, also my COMPLIMENTS to the devels ...

by Stéphane Letz :: Rate this Message:

Reply to Author | View in Thread


Le 15 juin 09 à 02:39, Tim a écrit :

> You know, other than that, I must say I am soooo happy with
> Jack2. Initial tests are remarkable - incredible !
> For years I used Jack 1 and put up with shutdowns and sudden
> 'buffer misaligns' (for lack of a better term) which caused  
> distortion.
> (Should'a seen me debugging Muse, looking at the process buffer
> pointers being passed by Jack to Muse, saying to myself "whaaa?"
> They seemed wrong, but what could I do? Other apps did it too...)
> It'd be funny if there was actually some kind of fix for it
> I didn't know about...
>
> Well, two nights with Jack2, hours of playing Muse 'Live' (no play/
> rec,
> until FF/REW is fixed) with MIDI keyboard and audio on an
> old Mandriva 2007.1 and no problems!
> I sure hope it stays that way...
>
> *** Thanks you guys! ***
>
> Tim.
>
> O

If I'm looking in the muse code (muse/driver/jack.cpp) as the right  
place, I can see that :

static void jack_thread_init (void* /*data*/)
       {
       doSetuid();
       if (jackAudio->isRealtime()) {
             struct sched_param rt_param;
             int rv;
             memset(&rt_param, 0, sizeof(sched_param));
             int type;
             rv = pthread_getschedparam(pthread_self(), &type,  
&rt_param);
             if (rv != 0)
                   perror("get scheduler parameter");
             if (type != SCHED_FIFO) {
                   fprintf(stderr, "JACK thread not running  
SCHED_FIFO, try to set...\n");

                   memset(&rt_param, 0, sizeof(sched_param));
                   rt_param.sched_priority = 1;
                   rv = pthread_setschedparam(pthread_self(),  
SCHED_FIFO, &rt_param);
                   if (rv != 0)
                         perror("set realtime scheduler");
                   memset(&rt_param, 0, sizeof(sched_param));
                   rv = pthread_getschedparam(pthread_self(), &type,  
&rt_param);
                   if (rv != 0)
                         perror("get scheduler parameter");
                   if (type != SCHED_FIFO)
                         fprintf(stderr, "JACK still not running  
FIFO !?!\n"
                         "======reliable RT operation not possible!!
======\n");
                   else
                         fprintf(stderr, "JACK thread succesfully set  
to SCHED_FIFO\n");
                   }
             }
#ifdef VST_SUPPORT
       if (loadVST)
             fst_adopt_thread();
#endif
       undoSetuid();
       }

So basically the Muse thread init callback starts to play with the RT  
thread parameters.... This is to avoided at  any price! NO APPLICATION  
IS EVER ALLOWED to play with those stuff. How do you think a system  
like JACK that is supposed to coordinate the proper functioning of a  
set of RT based audio application can deal with applications that  
start to do this kind of cray stuff on their own side?

So please remove this code then we can see if the problem you  
mentioned still persists.

Stephane
_______________________________________________
Jack-Devel mailing list
Jack-Devel@...
http://lists.jackaudio.org/listinfo.cgi/jack-devel-jackaudio.org

 « Return to Thread: Muse and JackActivationCount errors