| Предыдущий | Следующий |
| MACH_MSG_MASK | MACH_SEND_INVALID_DATA |
MACH_SEND_IN_PROGRESS
Внутренний признак ожидания
MACH_SEND_IN_PROGRESS объявлен в текущих заголовочных файлах XNU как предназначенный только для внутреннего использования. Он представляет поток, ожидающий в пути отправки, и не является обычным общедоступным результатом завершения, который код приложения должен обрабатывать как стабильный исход API. Переполненная очередь сообщений, параметр тайм-аута, прерывание или событие жизненного цикла порта могут определить окончательный общедоступный результат после завершения ожидания.
Если эта константа появилась в журнале приложения, сначала установите, откуда она получена. Её могут раскрыть трассировка ядра, проверка отладчиком, анализ сбоя, закрытые оболочки или код, записывающий промежуточное состояние потока. Считать её эквивалентом MACH_SEND_TIMED_OUT неверно: «выполняется» описывает ожидание, а тайм-аут является результатом завершённой операции.
Что проверить
- Сохраните окончательное возвращаемое значение
mach_msgи использованные параметры, особенно поведение тайм-аута и прерывания. - Проверьте нагрузку на очередь назначения и оставалось ли право получения действительным во время ожидания.
- Не сохраняйте это внутреннее значение как межверсионное состояние протокола.
- При диагностике зависшего потока проверяйте причину его ожидания и принимающую службу, а не запускайте неограниченные повторы из другого потока.
Ссылки
Нужно найти другой код? Найти другой код состояния или ошибки.