Хелгринд говорит: «Ошибка в libpthread» - PullRequest
0 голосов
/ 26 октября 2018

Я использую helgrind для проверки данных в моей программе. Helgrind сообщает о 222 ошибках, все они:

Thread #21: Bug in libpthread: pthread_cond_wait succeeded without prior pthread_cond_post

Я не смог найти ничего об этом сообщении об ошибке в Google. В исходном коде valgrind это, кажется, происходит здесь:

if (!timeout && !libhb_so_everSent(cvi->so)) {
      /* Hmm.  How can a wait on 'cond' succeed if nobody signalled
         it?  If this happened it would surely be a bug in the threads
         library.  Or one of those fabled "spurious wakeups". */
      HG_(record_error_Misc)( thr, "Bug in libpthread: pthread_cond_wait "
                                   "succeeded"
                                   " without prior pthread_cond_post");
}

Однако я не могу поверить, что примерно через секунду я получил 222 ложных пробуждения.

Что может быть причиной этого?

В разделяемой памяти есть две условные переменные. Кажется, ошибка всегда происходит с одним из них, а не с другим.

...