Консультация № 176494
04.02.2010, 16:46
0.00 руб.
05.02.2010, 06:05
0 3 1
Добрый день
даже не знаю, к кому обратиться с таким вопросом. Вопрос не по программированию, а по анализу программы.
информации в гугле не нашел, поэтому буду рад любому, что сможет помочь продвинуться дальше.

Предыстория: при работе в интернет компьютер начал резко подтормаживать, после перезагрузки машина ушла в зависание. Машина защищена авирой с актуальными базами.
сделано: на машине установлено параллельно 2 ОС windows. вторая абсолютно работоспособна. из-под нее почищена основная система лечащей утилитой от DrWeb.
результат:
1 - машина виснет при попытке грузиться в безопасном режиме.
2 - при загрузке в обычном режиме машина работает, но виснет.

СУТЬ ВОПРОСА ---------
зависание вызывает процесс explorer.exe, замена файла explorer.exe результата не дала. на файле стоит цифровая подпись microsoft.
Если посмотреть детально на процесс (смотрел утилитой Process Explorer от microsoft) то видны "нити" - Threads процесса. подвисание вызывает нить
explorer.exe+0x160cc
в рабочем компьютере наиболее похожая нить это
explorer.exe+0x1a55f
проверено на нескольких машинах. Эта нить отвечает за отображение рабочего стола.
Если эту нить завершить, то машина "развешивается".

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

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

Обсуждение

давно
Старший Модератор
17042
808
05.02.2010, 06:06
общий
Rok-set:
Вопрос перенесён как не имеющий отношения к программированию на C / C++.
Об авторе:
We have but faith: we cannot know;
For knowledge is of things we see;
And yet we trust it comes from thee,
A beam in darkness: let it grow.
-----
https://www.linkedin.com/in/andreynkuznetsov
https://www.researchgate.net/profile/Andrey_Kuznetsov11
http://www.researcherid.com/rid/K-8824-2014
Неизвестный
05.02.2010, 06:35
общий
это ответ
Здравствуйте, Rok-set.

"нить перерисовки" - это, как я понял, базовая нить, т.е. сам explorer.exe c рабочим столом на борту.
Посмотреть на нити можно программой ProcExp.exe или Process Explorer в простонародии, разработанная в SystemInternals, даже, возможно она у них с исходниками(там у них всё с исходниками). Программа показывает нити процесса, можно подвесить/отпустить нить, посмотреть стек нити.

Надо повспоминать, что последнее время устанавливали. Иногда антивирусы, файрволы и прочие, могут давать такой "эффект". У меня pgp на одной машине постоянно подвешивал explorer.exe, при поднятии контекстных меню.
Может, вирус/троян. Надо посмотреть procexp-ом на explorer внимательно, проверить, все ли нити "родные", посмотреть, кто с каких dll-ек стартовал. Вредоносная программа может прицепить себя к explorer.exe через удалённое открытие нити. Вторая по "популярности" для прицепиться - spoolsv.exe.

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

На крайний случай можно взять MS VS 2005 и выше и приаттачиться к процессу explorer.exe и попробовать посмотреть его под дебагом.

Ещё полезная штука - антивирус AVZ.exe, у неё в комплекте есть много инструментов для просмотра процессов, драйверов и dll-ек, которые загружены в память. Так же она, при проверке на вирусы и сканировании памяти, показывает все системные перехваты, правда, не показывает кто, но это легко ловится через любую MS VS, достаточно вызвать в коде перехваченную функцию и зайти в вызов, студия в стеке вызова(ctrl + 7) покажет имя dll-ки, которая содержит перехват (я так поймал за руку аутпост )
Есть ещё такая программа: IceSword, тоже показывает драйвера и процессы, умеет показывать скрытые руткитами и системой файлы (видел только 32-битную версию).

Если что ещё вспомню, напишу.
5
давно
Мастер-Эксперт
259041
7459
13.02.2010, 03:07
общий
Rok-set:
"Подскажите пожалуйста…чем можно поправить эту проблему" - если кардинольно, то переходом на ОС Windows2000 Sp4. Но у WinXp больше возможностей в ком-строке и есть Reg.exe-обработчик!!
Болезнь "усталости" загруженного Explorer.exe стала хронической с появлением WinXp и Win2003Server. По моим наблюдениям, Explorer начинает тормозить после копирования б к-ва файлов, когда их суммарный объём достигает размера опер-памяти. Чего т-ко я не делал чтобы избавиться от досадного дефекта! Поделюсь с Вами своими глупостями, которые помогли мне работать почти комфортно.

В GpEdit.msc я отключил 4 следилки (перевожу ниже-параметры в состояние Включено):
Конфи юзера \АдмШабл\ПанельЗадач [Отключить слежение за действ-ми польз-ля]
Конфи юзера \АдминШ\ПанельЗдч [Не использвть сопоставлени ярлыкв оболочки на…]
Конфи юз\АдминШ\ПанельЗдч [Не использвть метд на основе отслежив-я для сопоставл ярлыкв]
Конфи юзера \АдминШ \КомпWind \Проводник [Не отслежвть ярлыки оболочки при перемещени]

В свойствах всех Nt-разделов я отключил индексирование для быстрого поиска.
Я отключил все видео-эффекты и автозапуски (в тч из реестра и раскрутку CdRom в МойКомп) кр Ctfmon.exe (индик клав-раскладки). Даже антивирус у меня постоянно отключен! За почтой и на RfPro я хожу без Каспера, и включаю его вручную т-ко при просмотре др URL и чужих флэшек.

В свойствах Раб-стола \ УпорядочитьЗначки я отключил ОтображатьЗначкиРабСтола, чистый экран облегчает Эксплореру работу с экран-слоями при переключении активного окна (Alt+Tab).

Дома я увеличил размер Ram до 2х ГБ и в Свойствах системы \ Быстродействие задал БезФайлаПодкачки. На работе у меня м Ram, и когда Explorer "устаёт", и надо закончить б копирование, я вообще отключаю Explorer.exe из Диспетчера задач, и управляю компом из Диспетчер \ менюФайл \ НовЗадача. При этом МногоЗадачность продолжает работать и мож управлять ею из Alt+Tab! Потом, чтоб загрузить "отдохнувший" Explorer, я перевхожу в сеанс (это быстрее, чем reBoot).
Если Вы предложите мне в ответ свои наработки, будем друзьями!
Форма ответа