diff --git a/glib/gthread-posix.c b/glib/gthread-posix.c index 29bc81a0f..f36055925 100644 --- a/glib/gthread-posix.c +++ b/glib/gthread-posix.c @@ -1235,6 +1235,7 @@ static void * linux_pthread_proxy (void *data) { GThreadPosix *thread = data; + static gboolean printed_scheduler_warning = FALSE; /* (atomic) */ /* Set scheduler settings first if requested */ if (thread->scheduler_settings) @@ -1247,8 +1248,11 @@ linux_pthread_proxy (void *data) tid = (pid_t) syscall (SYS_gettid); res = syscall (SYS_sched_setattr, tid, thread->scheduler_settings->attr, flags); errsv = errno; - if (res == -1) + if (res == -1 && g_atomic_int_compare_and_exchange (&printed_scheduler_warning, FALSE, TRUE)) g_critical ("Failed to set scheduler settings: %s", g_strerror (errsv)); + else if (res == -1) + g_debug ("Failed to set scheduler settings: %s", g_strerror (errsv)); + printed_scheduler_warning = TRUE; } return thread->proxy (data);