[OSy] Nedeterministicke chovanie - preco?

Peter Júnoš petoju at gmail.com
Sat Nov 10 03:10:38 CET 2012


Dobry den,

dakujem za rady - o tom stasti v nestasti to asi ani nie je, lebo chybu
hladame od zaciatku tyzdna - az teraz niekto skusil pridat zamky k
vypisu a zacalo vyskytovat na zaciatku, co sa potom dalo dobre ladit.

Chybu som nasiel, ale bohuzial nie v mojom kode alebo v kode, ktory by
som vedel ovplyvnit (ak je moje podozrenie spravne). 

V instrukciach / dissasembly je nieco taketo: 
jal     8008f54c <puts>
lui   v0, 0x8009
addiu   a0,v0,13944
jal     8008f54c <puts>

Akurat sa mi zda, ako keby kompilator nepocital s BD slotom - v0 sa v
puts prepise bez ukladania (co moze) a potom logicky druhe puts dostane
nejaky nezmysel a spadne. Keby bol po JAL obycajny NOP, tak by tato cast
kodu fungovala podla ocakavani.

Parameter -fno-branch-delay alebo aj -fbranch-delay nic nemeni. Problem
s JALmi bez ocakavaneho BD slotu sa vyskytuje len v subore
adt/spinlock.c (ostatne volania mimo tuto jednotku vyzeraju dobre - s
NOPom). Na konkretne "atomicke instrukcie" ll/sc sa vykonavanie kodu
nedostalo.

Ako teda prosim, vyriesit este toto? (Pricinu takejto kompilacie sa mi
nepodarilo dnes (/vcera) odhalit, aj ked sa tam nepouziva nejaka
"kompilerova magia").

Dakujem
-- Peter Júnoš

On Pi, 2012-11-09 at 11:19 +0100, Martin Decky wrote:
> Hezky den,
> 
> > Ako teda toto co najjednoduchsie riesit?
> 
> V teto situaci se asi skutecne neda poradit nic jineho, nez co psal Petr 
> Tuma. Tedy nasadit si dlouhe holinky a ponorit se do debuggovani na 
> urovni instrukci, az po kolena :-) Zadna zkratka Vam tady asi nepomuze.
> 
> Osobne bych postupoval tak, ze bych si otevrel disassembly kernelu (a 
> pripadne firmwaru, i kdyz pokud jste jej nemenili, tak to jsou porad 
> jenom tri instrukce), postupne bych krokoval kod instrukci po instrukci 
> a porovnaval to, co vidim pri provadeni kodu, s tim, co vidim v 
> disassembly (zda napriklad kod najendou neskoci nekam jinam nez by mel 
> apod.). Pricina toho problemu zkratka nutne musi byt nekde v tom kodu. 
> Muzete hovorit o stesti v nestesti, ze se ten problem projevuje tak brzo 
> po bootu, pravdepodobne budete muset prokovat jen par desitek instrukci, 
> coz se rozhodne da zvladnout v rozumnem case.
> 
> 
> M.D.
> 
> _______________________________________________
> OSy mailing list
> OSy at d3s.mff.cuni.cz
> https://d3s.mff.cuni.cz/mailman/listinfo/osy





More information about the NSWI004 mailing list