Что означает код возврата ядра macOS 41 (KERN_LOCK_OWNED_SELF)?

 
Также может означать:
КонстантаТипОС
ippStsI18nMsgCatalogInvalidСтатус Intel IPPЛюбая
EWOULDBLOCKerrnoLinux
EPROTOTYPEerrnomacOS
ELNRNGerrnoSolaris
ENOTEMPTYerrnoWindows
SECURITY_SYSTEMКод BSODWindows
Предыдущий Следующий
KERN_LOCK_OWNED KERN_SEMAPHORE_DESTROYED

KERN_LOCK_OWNED_SELF

Самовладение обнаруживает проблему повторного входа

KERN_LOCK_OWNED_SELF означает, что вызывающая сторона уже владеет блокировкой. Это отличается от конкуренции с другим потоком: простое ожидание не поможет, поскольку тот же поток должен сначала выйти, освободить блокировку или избежать второй несовместимой операции блокировки.

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

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

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

Ссылки


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