In the source file sysdeps/pthread/aio_misc.c, the variable policy was likely to be assigned to aiocbp->aiocb.__policy without initialization. 297: struct requestlist * 298: __aio_enqueue_request (aiocb_union *aiocbp, int operation) { ... 301: int policy, prio; ... 322: pthread_getschedparam (pthread_self (), &policy, ¶m); ... 351: aiocbp->aiocb.__policy = policy; ... } In Line 322, the policy may be uninitialized in some paths. Please check the function pthread_getschedparam in npt/pthread_getschedparam.c. int __pthread_getschedparam (pthread_t threadid, int *policy, struct sched_param *param) { struct pthread *pd = (struct pthread *) threadid; /* Make sure the descriptor is valid. */ if (INVALID_TD_P (pd)) /* Not a valid thread handle. */ return ESRCH; int result = 0; /* See CREATE THREAD NOTES in nptl/pthread_create.c. */ lll_lock (pd->lock, LLL_PRIVATE); /* The library is responsible for maintaining the values at all times. If the user uses an interface other than pthread_setschedparam to modify the scheduler setting it is not the library's problem. In case the descriptor's values have not yet been retrieved do it now. */ if ((pd->flags & ATTR_FLAG_SCHED_SET) == 0) { if (__sched_getparam (pd->tid, &pd->schedparam) != 0) result = 1; else pd->flags |= ATTR_FLAG_SCHED_SET; } if ((pd->flags & ATTR_FLAG_POLICY_SET) == 0) { pd->schedpolicy = __sched_getscheduler (pd->tid); if (pd->schedpolicy == -1) result = 1; else pd->flags |= ATTR_FLAG_POLICY_SET; } if (result == 0) { *policy = pd->schedpolicy; memcpy (param, &pd->schedparam, sizeof (struct sched_param)); } lll_unlock (pd->lock, LLL_PRIVATE); return result; } strong_alias (__pthread_getschedparam, pthread_getschedparam)