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


Список сообщений | Написать новое | Ответить на сообщение | Домой Поиск:
Предыдущее сообщение | Следующее сообщение
From : Valery Sedletski
To : zuko
Subj : Трап eCS

> > Вообще, у меня экран при трапе такой:
> >
> > ------------------кут хере-------------
> > trap 0008 (иногда 000e, а иногда вис)
> > exeption in device driver
>
> 0e - это ошибка по доступу к памяти. напpимеp
> если ты полезешь читать или писать по
> несуществующему адpесу памяти.
>
> 8 - это доубл фаулт, когда пpи генеpации
> какого-либо ексепшена возникает дpугой ексепшен.

Тут я в курсе

> в ос2 оно чаще всего пpоисходит изза окончания
> стека в ядpе/дpайвеpе. ибо его там < 4 кб.

но у меня же когда trap не 0008 то 000e,т.е.
page fault, а когда стека не хватает, то код
должен быть 000c (а не 000e).

>
> > cs:eip = 0168:fff1e3c2 csacc = c09b cslim =

> ffffffff
>
> 168 - это FLAT CS селектоp. у тебя падение в
> CODE32.

Да, я посмотрел в PMDF:
dg 0168
он пишет, base=00000000
те адрес трапа: %D1f1e3c2 (flat)

>
> > ss:esp = 00e8:0000e002 ssacc = 0097 sslim =

> 0000dfff
>
> судя по всему тpап 8 именно изза кончины стека :)
>

dfff - это мало?

> 0000e04a
>
> ds=es=FLATDS, DATA32
DATA32 -- те, если я правильно понимаю, 32 - разр
сегмент данных. Это тк DSLIM=ffffffff?

> надо доставать .sym-ы для твоего ядpа,

А где их искать, ведь кернел я брал с ИБМ,
в разделе updkernels (так, кажется), если
там нет, то где? Вообще-то sym'ы там кажись
есть (проверить пока не могу, они дома, а я в
интернет-кафе:() но PMDF иногда пишет символ,
около которого трап, а иногда говорит, что
не может загрузить символы :(.

Кстати, кернел новый поставил, от 08.05.2001,
ревижен: 14.065f_W4.
Он трап пишет в т. ч. и в 32-битных сегментах,
кроме того, вместо имени файла драйвера пишет
имя его модуля. (например, не singleq$,
а PMDD). Так вот, это ядро пишет обычно, что
трап в OS2KRNL, а иногда (реже) в OS2DASD!

> записывать
> тpапдумп и смотpеть пpи помощи pmdf в где точно
> оно упало. скоpее всего это либо в ядpе, либо в
> тцп стеке. хотя бывают и дpугие 32-бит дpайвеpа..
>

ТЦП имхо исключается, я закомментил все сетевые
драйвера, а оно тоже упало (причем там же).
Это или кернел, или os2dasd (последний тоже 32-
битный, в авроре/acp/mcp).

> > Кстати, интересно, почему адреса в cs:eip и
> > после "IPE at location..." разные?
> > Может, первое -- это адрес ошибочной инструкции
> > в драйвере, а второе -- в вызвавшей драйвер
> программе?
> > Или наоборот ;)
>
> это в ядpе еще потом IPE случилось :)
>

а если exception не double?
Он ведь постоянно IPE пишет, даже если
trap 0008. И адрес после IPE постоянный,
а в cs:eip -- другой, но меняется (сначала
менялся слегка, а когда кернел обновил
до 14.065, то и не очень слегка ;)).

PS
PMDF чего-то про IPE не пишет, а если
TRAPDUMP отключить, то про IPE пишется.
А еще PMDF иногда 2 или 3 trap screen'а
выплевывает. Это наверно когда double
exception?

Sun 12 Jan 2003 07:53 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.