This warning is printed during every startup on the FreeBSD.
What happens is this:
Jack starts with real-time priority
jack_acquire_real_time_scheduling => process already runs at sufficient realtime priority
jack_drop_real_time_scheduling is called with thread=27353088, now it has policy=SCHED_OTHER
thread=27353088 spawns thread=27359488, both have policy=SCHED_OTHER
thread=27353088 spawns thread=27360768, both have policy=SCHED_OTHER
jack_acquire_real_time_scheduling is called in thread=27360768 and it fails, because it can't self-raise its priority, it can only lower it.
It should only lower priority of threads that don't later attempt to raise it again.
IMO, the logic is flawed here. Linux allows to raise priority of threads of root-owned processes, and jack assumes that everybody does the same, while BSD OSes don't allow to raise thread priority. There is rtprio(RTP_SET) for a process, and rtprio_thread(RTP_SET) for a thread.
I am not sure what would be the right fix here. It might be needed to replace pthread_setschedparam -> rtprio_thread.
This warning is printed during every startup on the FreeBSD.
What happens is this:
It should only lower priority of threads that don't later attempt to raise it again.
IMO, the logic is flawed here. Linux allows to raise priority of threads of root-owned processes, and jack assumes that everybody does the same, while BSD OSes don't allow to raise thread priority. There is rtprio(RTP_SET) for a process, and rtprio_thread(RTP_SET) for a thread.
I am not sure what would be the right fix here. It might be needed to replace pthread_setschedparam -> rtprio_thread.