Отрицательное значение в переменной-члене __writer структуры pthread_rwlock_t [закрыто]C++

Программы на C++. Форум разработчиков
Anonymous
Отрицательное значение в переменной-члене __writer структуры pthread_rwlock_t [закрыто]

Сообщение Anonymous »

Я устраняю один случай взаимоблокировки в моем приложении, работающем на RHEL 7 (glibc 2.17). При проверке с помощью GDB во время взаимоблокировки я вижу следующие значения при печати std::shared_timed_mutex (который внутри использует pthread_rwlock_t):
Изображение

Я с подозрением отношусь к приведенным выше значениям, особенно к значению, наблюдаемому в '__writer'. Насколько я понял, просматривая исходный код glibc 2.17, __writer должен хранить идентификатор потока, получившего блокировку в режиме записи. Поэтому отрицательное значение не имеет никакого смысла.
Это какое-то допустимое значение? Может ли это недопустимое значение быть каким-то образом связано с тупиком, который я вижу в своем приложении? Или это связано с тем, что GDB не может должным образом проверить мьютекс (возможно, из-за какого-то несоответствия версий. Просто догадываюсь).
А также, что именно означают значения, видимые в __writer_wakeup и __readers_wakeup ? Я понимаю переменные в очереди, но что это за переменные пробуждения?

Подробнее здесь: https://stackoverflow.com/questions/787 ... d-rwlock-t

Вернуться в «C++»