From: Robert J. <rj...@sp...> - 2004-11-10 22:50:04
|
Hi all, Spent the evening on #lad trying to debug MusE under 2.6. As it happens Tapas had a bunch of ideas and insights into possible problems with threading in MusE. It seems there are a bunch of bugs in some glibc's that affect thread creation. I think the problem was mainly that attributes for the threads where ignored. Here's a link to his bugreport for debian: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=266507 Apparently we can avoid this by doing setschedparam after thread creation instead of setting attributes before. This reminds me of the fluidsynth threading problem. I have to check if it's related. Here's a small patch from him for the watchdog (I'm a bit uncertain exactly what the problem was with change nr2): --- muse/app.cpp.orig 2004-11-10 12:52:50.000000000 +0100 +++ muse/app.cpp 2004-11-10 15:18:23.000000000 +0100 @@ -150,11 +150,11 @@ memset(&rt_param, 0, sizeof(rt_param)); rt_param.sched_priority = sched_get_priority_max(SCHED_FIFO); int rv = pthread_setschedparam(pthread_self(), SCHED_FIFO, &rt_param); - if (rv == -1) + if (rv != 0) perror("set realtime scheduler"); int policy; - if ((policy = sched_getscheduler (0)) < 0) { + if (pthread_getschedparam(pthread_self(), &policy, &rt_param)!= 0) { printf("Cannot get current client scheduler: %s\n", strerror(errno)); } if (policy != SCHED_FIFO) Lastly, about the watchdog being set to 99, apparently this priority is "reserved" when dealing with the Voluntary Preemption patch. Possibly only of academic nature since the thread runs very little but it might be an idea to lower it. Ok, enough progress reporting for one night, more to come... /Robert -- http://spamatica.se/music/ |