Почему иногда Windows не может убить процесс?

Прямо сейчас я пытаюсь запустить / отладить мое приложение в Visual Studio, но он не может его создать, потому что последний экземпляр app.vshost.exe все еще запущен. Затем, используя диспетчер задач, я пытаюсь его убить, но он остается там без сигнала активности.

Помимо этого конкретного случая (возможно, ошибка Visual Studio), мне очень любопытно узнать, почему иногда Windows не может убить процесс?

Может, просвещенный разработчик, связанный с ОС, попробуйте объяснить?

(И, пожалуйста, не начинайте битву Unix / Linux / Mac с Windows.)

Причиной обычно являются некоторые безответственные драйверы, которые имеют незавершенные запросы ввода-вывода . http://blogs.technet.com/markrussinovich/archive/2005/08/17/unkillable-processes.aspx

Одна из возможных причин: вы не можете убить задачу, прикрепленную к отладчику.

Единственный способ остановить задачу – от самого отладчика.

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

Откройте страницу « Свойства» для проекта, перейдите на вкладку « Отладка » и установите флажок «Включить неуправляемую отладку кода». Или снимите флажок, чтобы использовать хост-процесс.

Если последний файл app.vshost.exe все еще запущен, просто подключитесь к этому процессу с помощью отладчика.

Должно быть найдено в меню под Debug-> AttachToProcess, затем выберите процесс подвески и подключитесь к нему.

Возможно, рассмотрение некоторых из приведенных здесь инструментов может привести к ответам?

https://stackoverflow.com/questions/49988/really-killing-a-process-in-windows

(Только сейчас я обнаружил, что pskill был единственным из нескольких инструментов, которые могли бы убить процесс, выполняемый под сеансом Windows 7 одного пользователя, с другого сеанса пользователя (или учетных данных, я полагаю).

Мой единственный опыт разработки на уровне ОС был в школе градиента, но я подозреваю, что это происходит (или что-то подобное):

Произошла ошибка при запуске последнего экземпляра, который пытался обработать отладчик, но некоторая другая проблема привела к сбою (возможно, было обнаружено утверждение об отладке, но прежде чем вы могли щелкнуть по диалоговому окну Abort / Retry / Ignore, был вызван другой разрыв , Возможно, из-за нулевого указателя). В результате, после остановки отладки, было то, что отладчик все еще ожидал вашего ответа на первое утверждение отладки, поэтому он не позволил процессу завершить работу. Но тогда отладчик прекратил работу, когда вы остановили отладку (или сделали это?), Превратив процесс в зомби или его дерево в зомби. Когда вы пытались убить процесс зомби, произошла ошибка, аналогичная этому, но диспетчер задач не рассказал вам об этом:

 C:\Windows\system32>taskkill /pid 9564 /f /t ERROR: The process with PID 9564 (child process of PID 22520) could not be terminated. Reason: There is no running instance of the task. 

Если вы решите попробовать одно и то же на родительском (в моем случае родителем был процесс отладчика, msvsmon.exe), он не работает так же:

 C:\Windows\system32>taskkill /pid 22520 /f /t ERROR: The process with PID 9564 (child process of PID 22520) could not be terminated. Reason: There is no running instance of the task. ERROR: The process with PID 22520 (child process of PID 13964) could not be terminated. Reason: There is no running instance of the task. 

Родитель был запущен IDE, но IDE разрезал пуповину, так что теперь у вас есть два процесса зомби. Вы не можете присоединить отладчик к процессу, который вы отлаживали, потому что уже подключен отладчик (зомби), и вы не можете подключить отладчик к отладчику (zombie), поскольку, поскольку Visual Studio скажет вам, когда вы попробуете :

Не удалось подключиться к процессу. В текущем состоянии операция не является законной.

Зомби все еще находятся в таблице процессов достаточно хорошо, чтобы предотвратить запуск другого экземпляра через отладчик, но вы, вероятно, могли бы запустить другой экземпляр вне IDE просто отлично.

Это касается более конкретной проблемы, связанной с тем, что VS создает зомбический процесс. Но процессы зомби часто не умирают. Ну, часто в Windows, иногда в Linux, пока вы не стреляете в них с помощью дробовика. Или это остановка? Но будьте осторожны при случайном применении ожидающих обновлений Windows.

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

Ты можешь!

Использование ProcessHacker (щелкните правой кнопкой мыши на процессе) -> Terminator.

  • Почему Visual Studio не может найти мою DLL?
  • VS2013 не компилирует представления ASP.NET MVC5
  • Уникальное определение ссылочных типов в отладчике
  • Создание виртуальных каталогов в IIS express
  • Почему опция «Установить как старт» хранится в файле suo, а не в sln-файле?
  • Сделайте Visual Studio понятием CamelCase при нажатии клавиш Ctrl и курсора
  • Не удалось запустить веб-сервер IIS Express
  • Будет ли установка Visual Studio 2010 рядом с VS2008 вызвать проблемы?
  • Как вы быстро находите реализацию (ы) метода интерфейса?
  • Невозможно подключиться к любому онлайн-ресурсу
  • Как распечатать в окне вывода отладки в приложении Win32?
  • Interesting Posts

    Android – способ отображения текстового текста в TextView?

    Как перегрузить унарный минус-оператор в C ++?

    Горячая клавиша для переключения языка ввода в Windows 7

    Создание символической ссылки на подключенный сетевой диск в Windows

    Java Отображает основную факторизацию числа

    Каков самый простой способ jQuery иметь «позицию: фиксированный» (всегда сверху) div?

    Как заставить Visual Studio «публиковать» функциональность включать файлы из события post build?

    Советы по использованию Vim как Java IDE?

    Как я могу выбрать содержимое HTML-тегов в Vim?

    Promise.all потребляет всю мою RAM

    Как мне разрешить ввод номера в мое консольное приложение C #?

    Android: поддержка нескольких экранов

    Радиус 4 ГБ, достаточный для 64-разрядной ОС

    Снижается ли производительность при выполнении циклов, чей счетчик uop не кратен ширине процессора?

    Рекомендации по добавлению семантики на веб-сайт

    Давайте будем гением компьютера.