Site icon EfmSoft

Что означает код NTSTATUS 0xC0000047 (STATUS_SEMAPHORE_LIMIT_EXCEEDED)?

 
Предыдущий Следующий
STATUS_MUTANT_NOT_OWNED STATUS_PORT_ALREADY_SET

STATUS_SEMAPHORE_LIMIT_EXCEEDED

Счётчик семафора превысил бы максимальное значение

Семафор хранит текущий счётчик между нулём и фиксированным максимумом. Успешные ожидания уменьшают счётчик; ReleaseSemaphore увеличивает его. Этот статус означает, что запрошенное увеличение при освобождении превысило бы максимум, что обычно указывает на несопоставленное освобождение или неправильный учёт единиц ресурса.

Запишите максимум семафора, величину освобождения и предыдущий счётчик, если API его предоставляет. Повтор не исправит инвариант, пока счётчик не изменится. Ищите пути очистки, освобождающие ресурс после неудачного захвата, дублирующиеся обратные вызовы завершения или код, освобождающий больше единиц, чем было получено. Не увеличивайте максимум только для сокрытия ошибки учёта, если модель ёмкости действительно не изменилась.

Что проверить

Ссылки


Нужно найти другой код? Найти другой код состояния или ошибки.

Exit mobile version