[pso] Problema tema 2 windows

Catalin Ionita io.catalin at gmail.com
Fri Mar 30 20:07:05 EEST 2007


Salutare la toata lumea,

Am testat tema 2 windows acasa (cu testul de pe site etc etc) si imi da
passed la toate cele 600 de teste (si nu am testat doar odata ).
Problema e ca odata uploadata tema se opreste (total la random) la un test
sau altul (fie el 30 sau 500).

Well, am zis ca procesorul meu e amd 64  3200+ si poate face el cine stie ce
nebunii pe acolo si atunci am testat tema la alt coleg cu un 2800+ si la fel
merge fara probleme(toate cele 600 de teste executate de nu stiu cate ori si
terminate f rapid si f bine)

Am fost in laborator pe calculatoarele de acolo si s-a comportat ca pe
server adica sa bloca (niciodata in acelasi loc)

O sa ziceti evident : sincronizare si sunt deacord dar practic eu nu vad
unde (adica am sincronizat la maxim pe cat posibil)
De ce tema mea e mai deosebita decat celelalte?
Pai am implementat un pic altfel, adica respectand cerintele unui driver asa
cum le-am inteles din ddk si anume deosebirea principala este ca am folosit
pe cat posibil coada de irp a sistemului adica nu am construit cozi
auxiliare de irp pentru ca nu
le consider necesare pt un driver care doar scrie, citeste si are o operatie
de ioctl.

O sa explic cum am implementat:

dispatchurile de read si write cheama startio (care pune irp in coada
alocata driverului de catre sistem  in cazul in care rutina e ocupata si
daca nu porneste rutina iostart pt irp); in prealabil am setat parametrii de
stare a iostart cu iosetstartatributes ca sa execute un singur pachet (sa
fie sincronizata treaba) ; si am avut grija sa las pe pending irp sa nu-l
inchida iocontroler

tot in startio, sincronizez o rutina de tratare a irp de read cu isr, si
termin irp  odata ce se termina buferul de read din isr prin rutina dpc
asociata isr ( treaba asta merge  k  pe toate sistemele testate adica  scrie
f  bine  )

pb apare la read
un irp de read nu trebuie neaparat sincronizat cu rutina de read si folosesc
o avertizare cu eventuri din rutina isr.
mai exact: cand primesc un caracter (sau mai multe ) semnalizez un event
(eventul e de tip syncronization event deci se reseteaza singur dupa )  iar
daca exista irp de read de prelucrat care astepta sau care o sa vina sa
astepte, testeaza in primul rand daca are suficiente caractere pt a termina
readul, daca nu asteapta pana mai primeste un alt event de scriere.
Pb e ca pe sistemul mai lent aceste eventuri se pierd (cateodata -adica au
fost cazuri cand au mers toate cele 600 de teste). Am zis sa schim IRQL si
sa nu mai transmit eventuri tocmai din isr ci din dpc. Acelasi rezultat.
Ok pb e ca acasa imi merge perfect si nu vad care e pb si chiar daca am
trecut un pic pe la laborator sa o iau un pic la debuging practic tot nu imi
dau seama de ce se pierd eventuri sau unde se duc si de ce la mine merge f
bine.


In caz de ceva stau la dispozitie cu codul. Am sincronizat si readul cu isr
sa vad cum se comporta. Si la fel. Mie imi  merge perfect , la upload se
bloceheaza intamplator. Nu vad de ce daca mie imi merge f bine si f rapid
(10-15 sec) la oricate executii si sunt doar 600 de teste unde ar putea sa
crape.

Nu de alta dar e f frustrant sa stai 2-3 zile cu 600 de passed in fata si sa
nu iti dai seama cam care ar fi pb serverului si doar sa presupui cam pe
unde ar fi problema lui(  outputul oferit in interfata web nu prinde nici un
dbgprint de ajutor dar am inteles ca nu prea e asa usor de prins  mesaje din
trimise de dbgprint)

Ok, sorry ca v-am plictisit cu mail asa lung dar
heeeeeeeeeeeeeeeeeeeeeeeeeeeeeelp,

Catalin Ionita
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://cursuri.cs.pub.ro/pipermail/pso/attachments/20070330/2b8f59a8/attachment.html


More information about the pso mailing list