[so] [Tema2][Windows] vmchecker says popen read too many syscalls

Gabriel Boroghina gabrielboroghina at outlook.com
Mon Apr 1 14:57:50 EEST 2019


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

De la: so <so-bounces at cursuri.cs.pub.ro> în numele George Diaconu via so <so at cursuri.cs.pub.ro>
Trimis: luni, 1 aprilie 2019 13:22
Către: Mihai Barbulescu
Cc: Sisteme de Operare
Subiect: Re: [so] [Tema2][Windows] vmchecker says popen read too many syscalls
 
La [1] output-ul din windows VM in format text, la [2] ca poza. (sper
ca asta este output-ul de care ziceai)
Din pacate vmchecker nu merge, iar eu am incercat acum sa urc din nou
tema (nu am modificat nimic, doar am sperat ca acum va merge cum a
mers si ieri dimineata), asadar nu am output de la vmchecker.
Am urcat si sursele de pe windows in repo-ul meu de pe gitlab [3]. Ar
trebui sa aveti drepturi.
Sursele sunt in directorul checker-win/sources/

[1] https://gist.github.com/GeorgeMD/e633da3a696053c828d582070bd6a5d5
[2] https://imgur.com/a/SBBIuER
[3] https://gitlab.cs.pub.ro/george.diaconu2208/l3-so-assignments

În lun., 1 apr. 2019 la 11:05, Mihai Barbulescu <b12mihai at gmail.com> a scris:
>
> Nu doar VM, trimite-ne __TOT__ outputul: de pe masinile virtuale de SO
> si de pe vmchecker.
>
> On Mon, 1 Apr 2019 at 11:01, George Diaconu <pgn.george at gmail.com> wrote:
> >
> > Da, folosesc masinile virtuale de la SO.
> > Am sa trimit rezultatele de pe VM cand ajung acasa.
> >
> >
> > On Mon, Apr 1, 2019, 10:51 Mihai Barbulescu <b12mihai at gmail.com> wrote:
> >>
> >> Tu cand rulezi testele le rulezi folosind masinile virtuale de SO [1]
> >> ? Parerea mea e sa rulezi folosind masinile virtuale de SO si sa ne
> >> trimiti si noua cum arata rezultatele IN MASINILE VRITUALE DE SO
> >> versus vmchecker
> >>
> >> [1] https://ocw.cs.pub.ro/courses/so/info/mv
> >>
> >> On Sun, 31 Mar 2019 at 20:44, George Diaconu via so
> >> <so at cursuri.cs.pub.ro> 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
> >>
> >>
> >>
> >> --
> >> Cu stimă,
> >> Mihai Bărbulescu
>
>
>
> --
> Cu stimă,
> Mihai Bărbulescu
_______________________________________________
http://ocw.cs.pub.ro/courses/so/info/lista-discutii


More information about the so mailing list