Visual Studio 2013 Profiler аварийно завершает работу и перезапускает / перезагружает систему

2327
Wollmich

У меня рабочая станция HP Z440 (E5-1680v4 и 128 ГБ ОЗУ, BIOS 2.39 Rev.A), и я использую Visual Studio Professional 2013 (обновление 5). Операционная система Windows 7 64-разрядная.

Например, когда я использую Profiler из Visual Studio в проекте C #, он падает и перезагружает / перезагружает мой компьютер.

Следующие шаги воспроизводят проблему:

  1. Запустите ПК и откройте Visual Studio
  2. Создайте консольное приложение C # (.NET 4.0)
  3. Добавьте Console.WritLine("Hello World :-(");к основному методу.
  4. Меню / Анализ / Производительность и Диагностика.
  5. Выборка процессора.
  6. Выберите проект HelloWorldдля примера.
  7. Вся информация, необходимая для создания сессий, была собрана.
  8. Нажмите Finish( Lunch profiling after the wizard finishesпроверено).
  9. Нажав на следующий диалог на да. enter image description here
  10. Windows запрашивает учетные данные администратора, которые я могу предоставить ему. enter image description here
  11. Я вижу вторую вкладку (* .vsp), показывающую Start the profiler. После этого компьютер вылетает и перезагружается / перезагружается .

Я вижу критическую ошибку в системном журнале после перезагрузки:

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

Есть идеи, что происходит? В прошлом году (2017) я смог использовать Profiler из Visual Studio 2013 на том же ПК. Единственными вещами, которые были изменены, были Обновления Windows и BIOS (сделать Meltdown и Spectre).

Что я могу сделать, чтобы я снова смог профилировать свой код?

5
Понижение BIOS с V2.39 до V2.38 не решило проблему. Профилировщик все равно вылетает на ПК (черный экран и перезагрузка). Wollmich 6 лет назад 0
Это происходит и на моем ноутбуке старого HP 8540w (i7 Q740, 16 ГБ ОЗУ, Windows 7 64-bit и Visual Studio 2013 Pro). В прошлом году он тоже работал на этом компьютере. С тех пор были установлены только обновления Windows. Wollmich 6 лет назад 0
Я также могу воспроизвести сбой на HP 8300 CMT (i7 3770, 8 ГБ ОЗУ, Windows 7 64-bit и Visual Studio 2013). Он работал и на этом компьютере в прошлом году. Поэтому я думаю, что этот сбой не зависит от оборудования. Есть ли другие люди с такой же проблемой? Wollmich 6 лет назад 0

2 ответа на вопрос

5
aap

Недавно MS предоставила настройки реестра для отключения патчей Spectre / Meltdown. Если профиль безопасности вашей среды разработки может соответствовать отключению этих исправлений, эти параметры позволят профилировщику снова работать:

reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" /v FeatureSettingsOverride /t REG_DWORD /d 3 /f  reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management" /v FeatureSettingsOverrideMask /t REG_DWORD /d 3 /f 

Перезагрузитесь, и профилировщик должен снова работать.

Источник: https://support.microsoft.com/en-us/help/4073119/protect-against-speculative-execution-side-channel-vulnerabilities-in

Благодарю. Он попробовал это, и это сработало. После установки этих двух параметров реестра система больше не падает, и Profiler из Visual Studio 2013 снова работает под Windows 7. Но исправления Spectre / Meltdown отключены. Я думаю, что лучше наконец перейти на Windows 10 и Visual Studio 2017. Wollmich 6 лет назад 0
Согласовано. OTOH для меня, поддержка автоматизации, предоставляемая под Win7, имеет решающее значение. Инструменты командной строки, предоставляемые для профилирования под Win10, значительно затрудняют выполнение чего-либо после завершения запуска профиля. Так что я пока не двигаюсь, по крайней мере, на одном лабораторном компьютере, где я не читаю электронную почту. aap 6 лет назад 0
3
Wollmich

Это вызвано январскими обновлениями Windows. Похоже, это не будет исправлено, см. Следующие комментарии Аллена Денвера:

Мне очень жаль, что вы видите, что эта проблема возникает. Недавно выпущенное исправление безопасности для Windows 7 (исправление безопасности «Расплавление / Призрак») вызывает использование всех версий мастера производительности Visual Studio и утилиты командной строки VSPerfCMD при использовании в режиме выборки для перезагрузки компьютера без предупреждений или записей журнала событий. Эта проблема влияет только на выборку, когда она используется для сбора стеков памяти процессора или .Net. Режим Инструментов не затронут. Аналогично режим Contention также не подвержен влиянию. Операции профилирования, поддерживаемые в Windows 8+, также не подвержены этой проблеме.

Причиной этой проблемы является то, что ранее поддерживаемые операции, выполняемые профилировщиком выборки, больше не разрешены после исправления безопасности. Исправление безопасности изменило ядро ​​ОС Windows 7 так, что используемый нами низкоуровневый код сбора данных приводит к перезагрузке компьютера. Никакой синий экран и никакие записи журнала событий не делаются, когда это происходит. Проблема возникает даже ниже, чем у этих средств ОС. Эта причина аналогична изменениям, которые были внесены в ядро ​​ОС Windows в Windows 8, в результате чего мы значительно изменили Visual Studio Profiler для использования различных методов сбора данных профилирования выборки. Windows 8 запрещает метод сбора, используемый в Windows 7. Теперь с исправлением безопасности Windows 7 также запрещает этот метод.

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

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

Аллен Денвер

Visual Studio

а также

Мы намерены выпустить патч, который позволит избежать перезапуска, запретив запуск сеанса сбора выборки. Это не «исправить», однако. У нас нет планов заставить Performance Explorer, Performance Wizard, VSPerfASPNetCMD или VSPerfCMD работать с выборками в Windows 7. Мы продвигаемся вперед с помощью инструмента использования ЦП и центра диагностики (он же «Профилировщик производительности»).

Источник: https://developercommunity.visualstudio.com/content/problem/177958/starting-the-profiler-leads-to-computer-restart-af.html

Обходной путь 1

Для Windows 7 и Visual Studio 2013 нет хорошего обходного пути, см. Комментарий Аллена Денвера:

Для VS2013 и более ранних версий Visual Studio вместо профилирования вы можете использовать метод Instrumentation.

Таким образом, вы больше не можете использовать режим выборки ЦП в Windows 7 и Visual Studio 2013.

Обходной путь 2

Я думаю, что переход на Windows 10 и Visual Studio 2017 - это то, что нужно, см. Также комментарий Аллена Денвера:

Профилирование Performance Wizard и Performance Explorer в Visual Studio 2017 с использованием техники выборки будет работать в Windows 10. В случае Win 8+ мы изменили коллектор, чтобы получать трассировки стека, используя другой набор функций ОС, а не наше собственное ядро. Водитель.

Вы должны включить текущее решение этой проблемы. Ramhound 6 лет назад 0
Тем не менее, это не меняет того факта, что вы должны включить текущее решение Ramhound 6 лет назад 0