RU/2: Форум. Общение пользователей и разработчиков OS/2 (eCS). : Как локализовать обработчик прерыв. драйвера???


Список сообщений | Написать новое | Ответить на сообщение | Домой Поиск:
Предыдущее сообщение | Следующее сообщение
From : valerius
To : zuko
Subj : Как локализовать обработчик прерыв. драйвера???

> > Известно, что некоторый драйвер виноват в одной большой бяке.
> > (порча r0 стека). Собственно, %subj%
> > То есть, роясь в каких структурах ядра, можно найти точку входа
> > в interrupt routine драйвера?
>
> теоретически должно быть описано в os/2 debuging handbook.
> там на каждое прерывание есть соотв. структуры - irqi, dirq итп.
>

Я собссно, сейчас там и роюсь, но пока не нашел.

> практически - попробуй в думпформаттере поизучать стеки прерываний,
> там есть Analyze -> System -> Interrupt Stack.
>

А эта функция, похоже, показывает какой-то гон. (имхо конечно).
Я посмотрел, в стеке прерываний (селектор e8) всего несколько слов,
(байт 32)а она (функция) показывает на два экрана последователь-
ность вызовов. Причем как я понял, схема такая -- показывается
фрейм стека и адрес функции, его записавшей (если я правильно понял).
Так вот, эта функция (Analyze->...->Interrupt stack) иногда вместо
метки кода, записавшего в стек, показывает метку из сегмента данных.
Как это понимать, не знаю. Аналогично, функция "unwind stack" работает
тоже как-то не так.

> еще, если ты предполагаешь что это за драйвер - проще в его
> теле найти его интеррупт роутину. hiew-ом или даже IDA-ой если
> потребуется.

Я нашел версию os2dasd (я думаю, что это он) с .sym'ом, к нему
прилагающимся. Попробую найти точку входа среди символов.

PS
Ох, кривые у меня видно, руки :((

Tue 25 Mar 2003 04:18 Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)




Programmed by Dmitri Maximovich, Dmitry I. Platonoff, Eugen Kuleshov.
25.09.99 (c) 1999, RU/2. All rights reserved.
Rewritten by Dmitry Ban. All rights ignored.