Сбой CLR только при запуске из задания PowerShell - как диагностировать - PullRequest
1 голос
/ 28 марта 2011

У меня есть программа .NET, которая вылетает внутри CLR JIT с внутренними переполнениями стека и ошибками нехватки памяти, , но только при запуске изнутризадание PowerShell .

Я предполагаю, что запуск его в качестве задания powershell накладывает некоторые виды ресурсов или ограничения безопасности , из-за которых .NET CLR сходит с ума.

Самым ясным объяснением, которое мне удалось получить, было то, что одна из этих ошибок когда-то проявлялась как исключение из HRESULT, в котором HRESULT был ERROR_COMMITMENT_LIMIT (исчерпан файл подкачки), хотя в файле подкачки и в файле действительно было достаточно места.БАРАН.В других случаях эти ошибки возникали в совершенно произвольных и невинных местах программы.

Как я могу диагностировать, что именно идет не так, какие ограничения нарушаются ?Существует ли API для получения всех ограничений, на которые распространяется процесс?Или есть способ перехватить или записать вызов WinAPI, который не выполняется из-за безопасности или ограничения квоты?Я вполне в порядке с использованием даже WinDbg для этого, но я не знаю, как использовать его для этой задачи.

1 Ответ

0 голосов
/ 28 марта 2011

Вряд ли здесь виновата PowerShell. Он не налагает никаких изменений безопасности или CLR, которые передаются дочерним процессам, которые он создает.

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

В частности, я бы обратил внимание на переменную %PATH%.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...