Отмена потока, у которого заблокирован мьютекс, не разблокирует мьютекс

помогать клиенту с проблемой, которая у него есть. Я'я более сисадмин / администратор БД, так что яЯ изо всех сил пытаюсь помочь им. Они говорят, что это ошибка в ядре / среде, яЯ пытаюсь либо доказать, либо опровергнуть это, прежде чем настаивать на том, чтобы это было в их коде, или обратиться к поставщику за поддержкой для ОС.

Бывает в Red Hat и Oracle Enterprise Linux 5.7 (и 5.8), приложение написано на C ++

Проблема, с которой они сталкиваются, заключается в том, что основной поток запускает отдельный поток для выполнения потенциально долго работающего TCP connect () [клиент, подключающийся к серверу]. Еслидавно работает» аспект занимает слишком много времени, они отменяют поток и начинают другой.

Это сделано потому, что мы незнать состояние серверной программы:

серверная программа запущена и работает -> соединение сразу принятопрограмма сервера не работает, машина и сеть в норме -> соединение немедленно оборвалось с ошибкой 'В соединении отказано'машина или сеть сломались или вышли из строя -> Соединение требует много времени для сбоя с ошибкойнет пути к хозяину

Проблема в том, что отмена потока, у которого заблокирован мьютекс (с обработчиками очистки, настроенными для разблокировки мьютекса), иногда НЕ разблокирует мьютекс.

Это оставляет основной поток зависшим при попытке заблокировать мьютекс.

Подробная информация об окружающей среде:

Glibc-2.5-65Glibc-2.5-65libcap-1.10-26ядро-отладки 2.6.18-274.el5GlibC-заголовков-2.5-65Glibc-синфазного 2.5-65libcap-1.10-26ядро-док-2.6.18-274.el5ядро-2.6.18-274.el5ядро-заголовков-2.6.18-274.el5Glibc-разви-2.5-65

Код был построен с: c ++ -g3 tst2.C -lpthread -o tst2

Любые советы и рекомендации с благодарностью

Ответы на вопрос(2)

Ваш ответ на вопрос