RU/2: Форум. Общение пользователей и разработчиков OS/2 (eCS). : Ответить на сообщение
Имя:
e-mail:
FIDO:
Home page:
сохранить данные о вас
Тема:
> >кстати селектоp e8 вообще не являлся стандаpтным > >pанее в ос2, напpимеp в ваpп3 его такого нет, а > >вот в acp2 он уже соответствует твоему. > > Это для ядра 14.065, > > >вообще, стандаpтное значение селектоpа для SS в > >r0 для 16-бит дpайвеpов и ядpа = 30. > > а вот я поставил более новое (14.085), > так там снова ss=0030 > > > TRAP SCREEN INFORMATION > OS/2 Kernel Revision 14.085_W4 Exception in module: OS2KRNL > TRAP 000e ERRCD=0000 ERACC=**** ERLIM=******** > EAX=00000004 EBX=ffecb4e8 ECX=00002cb0 EDX=ffff0080 > ESI=fefc54a0 EDI=fdbd2f78 EBP=00000004 FLG=00012046 > CS:EIP=0168:fff18c30 CSACC=c09b CSLIM=ffffffff > SS:ESP=0030:00005118 SSACC=1097 SSLIM=000043ff > DS=0160 DSACC=c093 DSLIM=ffffffff CR0=8001001b > ES=0160 ESACC=c093 ESLIM=ffffffff CR2=e9029240 > FS=0650 FSACC=0093 FSLIM=00005fff > GS=0000 GSACC=**** GSLIM=******** > %D1f18c28 OS2KRNL intKernelExit + 8 > > Здесь проблемы со стеком уже нет, > трап не двойной, а система пытается > залезть в несуществующую страницу памяти (trap 0e). > > # u %D1f18c28 - 10 > > -------cut------------------------------- > OS2KRNL intKernelExit: > %D1f18c28 8f05b80bddff pop dword ptr [ffdd0bb8] > %D1f18c2e 0fa9 pop gs > %D1f18c30 0fa1 pop fs > ^^^^^^^^^ ^^^^^^^^^^ > %D1f18c32 07 pop es > %D1f18c33 1f pop ds > %D1f18c34 61 popad > %D1f18c35 83c408 add esp,+08 > %D1f18c38 cf iretd > OS2KRNL PrivateStackExit: > -------cut------------------------------ > -- Выход из кернела? > > Стек: > > # dd 0030:00005000 l200 > > -------cut------------------------------ > 0030:00005000 25a0517c 00000000 50760001 0608294c > 0030:00005010 0030504e 47100029 51b05001 00600000 > 0030:00005020 0001000a 47100029 1f585536 fef12cd4 > 0030:00005030 00000069 40010000 9ff24001 0100ffeb > 0030:00005040 22460000 1e3b0000 8c86fff2 1e1cf9f4 > 0030:00005050 5092fff2 23480000 8c86fff2 d44cf9f4 > 0030:00005060 2246ffec 27d70000 0002ffdd 8c860000 > 0030:00005070 8e0ef9f4 000afff1 00000160 ffdd2795 > 0030:00005080 ffdd27d7 00000002 ffdd27d5 f9f48cd4 > 0030:00005090 00040000 b4090000 27e90160 12000a00 > 0030:000050a0 ffff2246 00040000 28090000 0a008020 > 0030:000050b0 2d090004 388c1200 fff1eb1c fff10168 > 0030:000050c0 ea60237c 0000010a 00000000 fff1eb1c > 0030:000050d0 ea600000 fdbd2f78 fefc54a0 00000004 > 0030:000050e0 000050f4 ffecb4e8 ffff0080 00002cb0 > 0030:000050f0 00000004 ffec0000 00000650 00000160 > 0030:00005100 00000160 0000000e 00000000 fff18c30 > 0030:00005110 00000168 00012046 00202246 01600a00 > ~~~~~~~~ > вершина стека > 0030:00005120 00da0030 2fac512a 513c1698 00fe2eb5 > 0030:00005130 00c017f2 50f80140 91dd17f2 515000da > 0030:00005140 16982d95 169817f2 17f24164 16ca0000 > 0030:00005150 20725164 04011698 16981929 169818bd > 0030:00005160 f9f47597 16bf516c 00002246 01600a00 > 0030:00005170 00040030 c400f5c0 51b0060b 51920000 > 0030:00005180 00000000 008e0000 00000000 00070000 > 0030:00005190 4ce90000 fff246b8 00002246 fff246c0 > 0030:000051a0 00002246 fabfefec f5c00004 f94c49a8 > 0030:000051b0 f9f48df0 ffead9ab 00000007 0000008e > 0030:000051c0 00000000 00000000 f94c40ca fd461597 > 0030:000051d0 f94c40ca 00000000 f94c40ca f8d55cbc > 0030:000051e0 000014c4 fd405000 f5c01fec fd405c48 > 0030:000051f0 f9f48e28 fee31a50 f9f48e28 fee31a73 > 0030:00005200 00005214 00000001 000001f4 00000000 > 0030:00005210 00044020 00000000 fd442cb8 fabf7a08 > 0030:00005220 05c20624 f8d55cbc f9f48e50 00002246 > 0030:00005230 fee270b1 07b00c48 faa7a3fc 000001f4 > 0030:00005240 0c000000 00002cbc f5c01fec faa7a3fc > 0030:00005250 000052d4 00005268 f8e24080 000001f4 > 0030:00005260 00800000 f8e2409c f8f0a080 f8f0b0ab > 0030:00005270 faa36cbc f8e24080 000052d4 f8f11d06 > -------cut------------------------------ > > Трап происходит при попытке выполнить инструкцию > pop fs. > В стеке в этот момент находится несуществующий > селектор 2246: > > # dl 2246 > 2246 Invalid Bas=00000000 Lim=00000000 DPL=0 NP > > Причем в стеке (на вершине) находится двойное слово > 00202246. Вообще-то, имхо за селектором наверное должны > идти нули (выравнивание по границе дв. слова), а там > почему-то 0020. > > Еще что можно заметить, так это то, что прямо перед > инструкцией "pop fs" было прерывание (прямо над вершиной > стека 3 двойных слова: fff18c30 00000168 00012046 -- > eip, cs и регистр флагов). > > Пока не знаю, как узнать, что это было за прерывание > и как попасть в его обработчик. Возможно, он и поместил > в стек мусор (00202246). > > Читаю книжки, т.к. они рулез ;) > Кстати, совсем забыл, что у меня где-то завалялась > дока про процессор i486 :) . > > PS > Кстати, убедился, что стека и в самом деле не > хватало (тогда). Стек занимает одну страницу памяти: > > # dg 30 > > 0030 Data Bas=ffd27c00 Lim=000043ff DPL=0 P RW ED A UV > ^^^^^^^^ ^^^^ ^^^^ > > # dp %D1d27c00 linaddr frame pteframe state res Dc Au CD WT Us rW Pn state > > %D1d27c00* 00201 frame=00201 2 0 c A U W P resident > %D1d2cc00 0059f frame=0059f 1 0 D A s W P uvirt > %D1d30c00 096ff frame=096ff 1 0 c u s W P uvirt > > -- Одна страница памяти: 0059f > > Легко убедиться, что эта страница занимает адреса > с esp= 4400 - 5400 > Так что в данном случае стека более чем хватает. > > А в предыдущем случае (ядро 14.065) стек кончился: > Стек: e000 - f000, esp=e002 - на 1 слово за верхний > предел. Так что посыпаю голову пеплом ;) > > Пока непонятно, что значит ebp=00000004, ведь ebp > должен указывать на базу кадра стека, а здесь он > указывает вообще за пределы стека. Может, это тоже > особенность expand-down стеков, или все-таки ошибка? > > PPS > pls, простите чайника за незнание азов :) > > PPPS > > > тебе надо pаскpучивать по стеку где пpоизошол > > пеpвоначальный тpап е и смотpеть отчего он > > случился.. > > Это я уже понял, что надо раскручивать стек, но как, > многое непонятно (не хватает знания азов :)), например, > где предыдущий кадр стека, ведь ebp=неизвестно чему. > Будем продолжать читать доки, но на это потребуется > время :). > > ЗЗЗЗЫ > А что ты можешь сказать насчет того, какая здесь > связь: трап в кернеле, нехватка стека и новый большой > жесткий диск (Barracuda 80 Gb)? Ведь все траблы начались > именно с установкой нового винта, со старым (ibm 60 Gb) > такого не было. У KuiSa-Ka вообще 2 терабайта массив, > а глюков почему-то нет. Тут наверно имеет значение > комбинация винт-контроллер-драйвера-ядро. Я ставил > и более новые ядра (стабильные -- 14.065, 14.085, и > с тесткейса -- 14.089E), обновлял os2dasd, danis506, > ibm1s506, но проблема как была, так и есть. > (А может быть имеет значение то, что у KuiSa-Ka наверное > JFS, а у меня HPFS386?) > Глюки по идее должны быть где-то в драйверах дисков, > но они почему-то в ядре. Кстати, у меня один раз трап- > нулось в os2dasd.dmd. Может, проблема именно в os2dasd? > Может, os2dasd передает неправильный запрос ядру, а то > от этого трапается? В общем, не знаю, раскручивать надо. > > > Valery Sedletski, > valerius (aka heretic). > _valerius@mail.ru
_, _, _, _, _ _, _,_
(_ | / \ |\ | / \ |_/
, ) | , \ / | \| \ / | \
~ ~~~ ~ ~ ~ ~ ~ ~
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.