[pso] [Tema1] Comportament ciudat spin_lock?

Razvan Deaconescu razvan.deaconescu at cs.pub.ro
Sun Mar 28 09:45:02 EEST 2010


On Thu, 2010-03-25 at 20:46 +0200, Laurențiu Dascălu wrote:
> Salut,
> 
> Pe Linux am încercat să stresez puțin tema:
> 
> for i in seq `1 1000`; do ./test; done
> 
> După câteva zeci de teste, s-a blocat. Mă uit prin cod, fac afișări dar 
> nimic nu era suspect. Am făcut două funcții care abstractizează 
> operațiile de lock și unlock; le-am folosit în temă și surpriză: tema 
> n-a mai crăpat.
> 
> void acquire() { spin_lock(&lock); }
> void release() { spin_unlock(&lock); }
> 
> E probabil să am un race în temă?

Este posibil asa ceva. Nu-mi dau seama cum un wrapper peste acele
functii ar putea avea un impact de "a nu bloca".

De blocat unde se bloca?

De asemenea, este posibil ca problema sa fie cauzata de utilizarea (si
alterarea) tabelei de apeluri de sistem. Parerea mea (neavizata) este ca
pot aparea probleme de sincronizare acolo, in momentul in care tu
modifici tabela si alte procese o citesc.

Tinand cont ca este o tema "hacky" (se altereaza direct sursele
nucleului si se lucreaza cu variabile/structuri interne), cauzele unor
astfel de probleme sunt destul de variate.

Razvan



More information about the pso mailing list