[pso] [tema1][win] Parametrii apelurilor de sistem & return value
Octavian Purdila
pso@cursuri.cs.pub.ro
Fri, 18 Mar 2005 10:11:53 -0500
On Thursday 17 March 2005 08:52 am, Andrei Costin wrote:
> OP> Era doar un exemplu. Atentie insa, apelul de sistem original
> poate face
>
> OP> sleep(), asa ca aveti grija la race-uri. Problema e ca in timp ce
>
> OP> apelul original face sleep, poate sa vina o cerere care sa
>
> OP> demonitorizez apelul de sistem, asa ca dupa apelul original nu
> trebuie
>
> OP> sa mai folositi decat variabile de pe stiva (sau sa stiti ce
> faceti).
>
>
> Referitor la aceasta ultima remarca 2 intrebari:
>
> 1. ce inseamna/implica "asa ca dupa apelul original nu trebuie
> sa mai folositi decat variabile de pe stiva (sau sa stiti ce
> faceti)"
>
Poate apare un race, in functie de modul in care ati implementat accesul
la apelurile de sistem interceptate. Ideea de baza este sa tineti cont
de faptul ca functia originala poate face sleep si intre timp poate sa
vina cineva si sa opreasca monitorizarea/interceptarea.
> 2. are vreo legatura cu NtClose()
>
> PS: 3. e NtClose() mai speciala - daca da, cum se rasfrange asta?
> intreb asta pentru ca imi
> moare/blocheaza testul doar la NtClose() si de pe lista de anul
> trecut stiu ca si altii au avut
> aceasta problema, dar egoisti au fost si nu ai zis care e treaba si
> cum au rezolvat...
>
Dupa cum o sa mai vedem la celelalte teme, in Windows operatia de close
se implementeaza din doua suboperatii: un clean mai intati si abia
apoi close-ul efectiv. Din cauza asta s-ar putea ca probabilitatea de
sleep la NtClose sa fie mai mare.
tavi