Salut, Am si eu problema asta. Din ce am observat, e o problema de sincronizare intre procesul parinte (care citeste din pipe) si procesul copil (care scrie in pipe).
Ideea e ca pipe-ul creat cu CreatePipe are un buffer asociat de dimensiune egala cu valoarea data ca ultim parametru (nSize); si daca bufferul asta nu e suficient de mare, procesul copil nu o sa reuseasca sa scrie suficient (4096 bytes in principiu, incat sa poti sa iti umpli tu bufferul din SO_FILE cand citesti) pana incepe procesul parinte sa citeasca. O varianta simpla de rezolvare ar fi sa ii dai o dimensiune mare buffer-ului pipe-ului; in felul asta, in cele 2 secunde de Sleep din tester (linia 82, unde e si comentariul // make sure the child process wrote all the data) child-ul va apuca sa scrie tot in buffer, iar parent-ul va citi cat de mult posibil (4096 la primele 3 citiri, restul la a 4-a si va primi EOF la a 5-a). Dar as vrea si eu sa stiu daca varianta asta e acceptabila (ca presupune sa setam nSize ala cu un "magic constant" oarecum). Btw, daca ii dai o dimensiune mica lui nSize (de ex. 300), o sa iti pice si pe local (sau daca ii dai 2-3 core-uri VM-ului :)) ). Daca dai nSize = 0, din ce am citit, se foloseste o dimensiune standard (care nu e prestabilita, depinde de RAM-ul disponibil, etc). Gabriel Boroghina On Sun, 31 Mar 2019 at 20:44, George Diaconu via so <[email protected]> wrote: > > Salut, > > Vin cu o problema veche de cand lumea, local trec toate testele fara > probleme, pe vmchecker, testul popen read da fail cu mesajul > "src/test_popen_read.c:96: Incorrect number of reads: got 220, > expected 5". > O singura data a trecut testul acesta pe vmchecker, si atunci nu am > modificat nimic intre upload-uri. Acum am mai facut cateva modificari, > local merge, dar pe vmchecker nu vrea... > Nici nu stiu cum sa fac debugging in clipa asta... > _______________________________________________ > http://ocw.cs.pub.ro/courses/so/info/lista-discutii _______________________________________________ http://ocw.cs.pub.ro/courses/so/info/lista-discutii
