День добрый.
После переезда на nptl стала появляться бага "busy loop".
Идея кода: случается нажатие кнопки (взводим событие и задаем abstime) и до тех пор пока ее не отпустили имитируется ее нажате.
Код такой:
pthread_mutex_lock(&mutex);
while (1)
{
// if we don't have any deadline, then just sleep
if ( abstime.tv_sec == 0 && abstime.tv_nsec == 0 )
{
pthread_cond_wait(&cond, &mutex);
}
else
{
int rc;
rc = pthread_cond_timedwait(&cond, &mutex, &abstime);
if (rc == ETIMEDOUT)
{
//do some
}
}
}
Иногда поток который исполняет этот код начинает жрать процессорное время до 40%
ну и как следствие все остальное мрет. Срабатывает ватч дог и все умирают
Есть у кого идеи?
p.s. Погуглил и нашел вот это
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=673711
но ввиду своей ограниченности не могу понять
1) есть ли эта бага в glibc 2.12.2 который я использую? Если что архитектура mips, ядро 2.6.37
2) если 1) истина, то где найти патч и пофиксить glibc. Использовать свежий glibc — вопрос решаемый не мной и не мгновенно.
Спасибо!
Если есть желание — найдется 1000 возможностей.
Если нет желания — найдется 1000 причин.