[OSy] Prepisovani navratove hodnoty TLBhandleru

Katerina Dufkova dkatka at seznam.cz
Mon Dec 4 21:04:13 CET 2006


Dobry den,
uz dva dny resime pomerne zavazny problem, a uz si opravdu nevime rady, proto se opet obracime na konferenci.. Zda se ze v kernelu mame nejakou funkci, ktera prepisuje pamet, kterou prepisovat nema. Vec se projevuje takto: test bezi v pohode a pak dojde k vyvolani TLBREFILL, ta je korektne obslouzena. Vypisujeme do logu hodnoty ktere se nasly ve strankovacich tabulkach a ty jsou spravne, navic se vykona i posledni prikaz obsluhy, kterym je take ladici vypis. Pak vypocet skonci a zadny prikaz za prikazem, ktery vyjimku vyvolal, uz se nikdy neprovede. Zda se jako bychom si prepsali navratovou hodnotu z TLBREFILL nebo tak neco. Nenapada me nic na co by se tam jinak melo cekat. Zadna chybova hlaska z msimu se neobjevuje. V TLBREFILL jsme (az po objeveni problemu, kvuli jeho snazsi lokalizaci) pridali zakaz preruseni na zacatek handleru a preruseni povolime az na konci handleru, takze jsme si mysleli, ze pokud v okamziku kdy se do handleru dostaneme je vse ok, tak zkazit to mohla jen funkce volana v handleru. Ty jsme kontrolovali, ale pricinu jsme nenasli. Jeste je divne, ze nekdy se kousne hned prvni TLBREFILL, nekdy druhy, nekdy jiny, nekdy zadny...

Problem je asi predevsim v tom, ze chyba je dosti nahodna v tom smyslu, ze pridanim ladicich vypisu se nekdy zase ztrati, test projde a tedy je pro nas opravdu vellky problem zjistit, kdy jsme chybu odstranili a kdy jsme to spravili jen "na oko" tim, ze se kod prodlouzil nebo zkratil, a za chvili se chyba objevi zase. 

Nevim jestli to s tim souvisi, ale meli jsme jeste druhou chybu souvisejici s TLBREFILL, totiz ze behem hledani ve strankovacich tabulkach doslo k dalsi TLBREFILL a tim k zacykleni. Tuhle chybu jsme sice zda se nejak odstranili, ale je mozne ze jde o totez, totiz ze nam nekdo nekde prepisuje pamet, a jen se ted netrefuje do pointru na second-level strankovaci tabulky ale nekam jinam.

Je mi jasne, ze konkretni odpoved kde je problem asi nedostaneme, ale presto budeme vdecni za kazdy postreh. Mozna mame stejny problem (a timto se omlouvam, ze se mozna ptam na totez) jako kolegove ze skupiny Jirky Touska. Ovsem vzhledem k tomu, ze v nasi skupine neni nikdo kdo by ovladal assembler, je pro nas cesta hledani chyby v tom logu a cteni onoho assemblerovskeho kodu, o kterem se zminoval, opravdu neschudna.

Jeste poznamka na konec - projdeme testem malloc1, testem area1 pouze nekdy (pokud mame zrovna "spravnou delku kodu"). Ostatni testy nejsou u nas uspesne vubec nikdy. Pridani "polstare" za kernel_end nepomohlo, nebo "polstar" nemel spravnou velikost.  

S pozdravem
                               Katka Dufkova



More information about the NSWI004 mailing list