Что означает код ошибки Windows 587 (ERROR_MUTANT_LIMIT_EXCEEDED)?

 
Предыдущий Следующий
ERROR_BACKUP_CONTROLLER ERROR_FS_DRIVER_REQUIRED

ERROR_MUTANT_LIMIT_EXCEEDED

Что означает ERROR_MUTANT_LIMIT_EXCEEDED

ERROR_MUTANT_LIMIT_EXCEEDED означает, что один поток попытался рекурсивно захватить mutant/mutex больше допустимого числа раз.

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

  • Стек каждого повторного входа в тот же lock.
  • Callbacks и virtual calls, выполняемые пока lock удерживается.
  • Соответствие каждого успешного acquire одному release.
  • Собственный счётчик recursion depth, если поверх системного объекта есть wrapper.

Как локализовать

Особенно подозрительны callbacks, которые косвенно возвращаются в тот же защищённый код. Не пытайтесь продолжать, просто повторяя acquire: depth от этого только растёт. Если огромная глубина невозможна по логике программы, проверьте повреждение bookkeeping или памяти. Для нового кода лучше избегать рекурсивной блокировки там, где reentrancy не является частью явного контракта.

Технические ссылки


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