RU/2: Форум. Общение пользователей и разработчиков OS/2 (eCS). : Ответить на сообщение
Имя:
e-mail:
FIDO:
Home page:
сохранить данные о вас
Тема:
> > > Известно, что некоторый драйвер виноват в одной большой бяке. > > > (порча 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 > Ох, кривые у меня видно, руки :((
__, _, __, _,_ _, _
|_ / \ |_) | | |\/|
| \ / | \ | | | |
~ ~ ~ ~ `~' ~ ~
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.