Wed, 22 February  |   Login English version  |  OS2.Ru  
В начало
Об OS/2
Новости
Публикации
DevCenter
База данных
Каталог ресурсов
Биржа труда
TeamDB
Форумы и общение
Опросы и конкурсы
Russian Team OS/2
На первую страницу OS2.Ru
 Вокруг OS/2 |  Программы и технологии |  Аппаратура |  Разработчикам |  Мастерская
Поиск по: Добавить закладку OS2.Ru в панель Netscape 6/Mozilla
OS2.Ru > Articles > Software > System > Hardkill
2001-10-11
Samorukov Alex
(версия для печати)

Боремся с зависанием PM и зомби - WatchCat + HardKill

В данной заметке речь пойдёт о неприятных моментах заложенных в архитектуру OS/2 и способах обойти их.

Как известно, архтектура PM построенна с использованием одной очереди сообщений. Это позволяет программе, которая некоректно работает с ней (или неправильно обрабатывает PM хуки) полностью блокировать пользовательский интерфейс OS/2. При этом все остальные программы продолжают работать, но отстрелить урода средствами OS/2 вы уже не сможете. Программа WatchCat позволяет вам вызвать встроенный в неё менеджер задачь и отстрелить зависшую программу (что обычно позволяет нормально работать дальше) даже при заблокированной очереди. Установка программы сложностей не вызывает, так что дополнительно описывать её я смысла не вижу.

Но есть ещё одна проблема - приложение может перехватить все исключения (включая CTRL-C, CTRL-BREAK, и DosKillProcess) и не реагировать на них (например из-за ошибки в этом самом обработчике). Такое приложение привращается в зомби - средствами OS/2 его не убить, а ресурсы исправно продолжают потребляться.

Holger Veit - один из авторов XFree86/OS2 исследуя SES и недокументированные возможности OS/2 нашёл, что в OS/2 Warp 3 FixPack 17 добавили возможность убивать такие процессы. После чего он написал API которое позволет программам используя вызов IOCTL категрии 0x76 (функция 0x65) драйвера $fastio убивать такие программы. Для того, чтобы использовать данную возможность в программе WatchCat вам нужно:

  1. Скачать драйвер xf86sup и прописать DEVICE=[path]\xf86sup.sys в config.sys.
  2. Скачать и установить plugin wnice который используя вышеупомянутый API расширяет возможности WatchCat.
  3. Скачать архив c Death Api. Этот пункт опционален, нам из него потребуется только файл pig.exe для проверки hardkill.
  4. Перезагрузиться ;-)
После перезагрузки попробуйте запустить процесс pig.exe и прибить его из watchcat (Kill proces в окне Renice/Kill interface). Если процесс успешно прибит, то вам повезло и всё работает. Если же вышеупомянутый свин продолжает себе жить как и ранее - у вас "неправильный" doscall1.dll. Если у вас OS/2 Warp 3.0, то вам поможет DOSCALL1.DLL из FP37. В OS/2 WSEB я использую DOSCALL1.DLL скачанный с IBM testcase. Надеюсь, что данный арсенал средств позволит вам повысить комфорт работы в OS/2.



Обсудить материал (число отзывов:12)


предыдущий материал


 Вокруг OS/2 |  Программы и технологии |  Аппаратура |  Разработчикам |  Мастерская


Новости
15/08: GoldenCode выпустит Java 1.4 для OS/2
14/06: Fix #16 rus / Warp4
30/05: Перерыв в работе OS2.Ru
Все новости..

В каталоге
Дерево каталога
Новые поступления

Публикации
Боремся с зависанием PM и зомби - WatchCat + HardKill
(Samorukov Alex , 2001-10-11)

DSync - куда может быть проще?
(Okounkov Konstantin, 2001-09-28)

WarpGoGo: переводим музыку в MP3
(Okounkov Konstantin, 2001-09-26)

Все материалы

Решения
Tips & tricks

Активные опросы
Используете ли Вы OS2.Ru tab в Netscape ?

Все опросы
Первая страница  |   Об OS/2  |   Новости  |   Публикации  |   База данных  |   Каталог ресурсов  |   Биржа труда  |   TeamDB  |   Форумы общения  |   Опросы и голосования  |   OS2.Ru DevCenter
Дизайн, оформление © 1996-2000 Copyright WebTeam. Использование материалов OS2.Ru без согласия авторов и координаторов запрещено
Powered by OS/2