[so] [Tema1][Test38] NR_RUNS=1000 e prea mic

Ştefan VODIŢĂ (94345) stefan.vodita at stud.acs.upb.ro
Tue Mar 10 17:13:06 EET 2020


Salut, Razvan!

Ai avut dreptate ca tema mea ajungea la 1000 de alocari din cauza ca aparea un loop. Am rezolvat acum problema.

Cred totusi ca merita sa luam in considerare adaugarea unui return -1 dupa forul din functia run_until_success[1].
Daca cineva ar vrea sa scape de testarea mallocurilor ar trebui doar sa introduca acest cod la inceputul mainului:

  char *aux;
  int i;
  for (i = 0; i < 1000; ++i) {
      aux = malloc(1);
      DIE(aux == NULL, "trick malloc check");
      free(aux);
  }

Orice alte mallocuri ar face apoi, nu ar mai fi verificate de checker. Asemenea se poate face si pentru calloc si realloc.

Alternativ, daca prin absurd cineva face peste 1000 de mallocuri in tema si ajunge la rezultatul corect, alocarile nu vor fi neaparat verificate.
In plus, in cazul meu, checkerul s-ar fi oprit dupa ce trecea prin 1000 de mallocuri fara sa mai continue la calloc.

Daca tema va mai fi folosita si in anii viitori, poate ca schimbarea pe care am propus-o se dovedeste utila.


Multumesc pentru ajutor,
Stefan

[1] https://github.com/systems-cs-pub-ro/so-assignments/blob/9efb7acc7bf65a49a77ae38633996d0bd362ef5e/1-multi/checker/multi/_test/run_test.sh#L162
________________________________
From: Razvan Crainea <razvan.crainea at gmail.com>
Sent: Sunday, March 8, 2020 7:22 PM
To: Vlad Lungu <vlad.lsc2008 at gmail.com>; Sisteme de Operare <so at cursuri.cs.pub.ro>
Cc: Ştefan VODIŢĂ (94345) <stefan.vodita at stud.acs.upb.ro>
Subject: Re: [so] [Tema1][Test38] NR_RUNS=1000 e prea mic

Salut, Ștefan!

Testul rulează tema ta de 3000 de ori[1], de câte 1000 de ori pentru
fiecare din funcțiile malloc (linia 180), calloc (linia 185) și
realloc (linia 190). De asta ai mai mult de 1000 de output-uri.
Probabil problema ta este că nu tratezi corect unul din cazurile de
eroare, și programul tau intră într-un loop.

Numai bine,
Răzvan

[1] https://github.com/systems-cs-pub-ro/so-assignments/blob/master/1-multi/checker/multi/_test/run_test.sh#L180

Numai bine,
Răzvan

On Sun, Mar 8, 2020 at 5:30 PM Vlad Lungu via so <so at cursuri.cs.pub.ro> wrote:
>
> Când declari hash-ul, ai grija la dimensiune. Nu ai nevoie de o tabelă hash de dispersie prea mare.
>
> On Sun, 8 Mar 2020, 16:56 Ştefan VODIŢĂ (94345) via so, <so at cursuri.cs.pub.ro> wrote:
>>
>> Salut!
>>
>> Am probleme la testul 38. Am folosit DIE pentru a opri executia de fiecare data cand o alocare esueaza.
>> Atunci cand rulez checkerul vad outputul de la DIE repetat pentru diferite alocari. La final apare un mesaj out of memory care anunta ca va fi oprit procesul so-cpp, iar testul pica.
>>
>> Daca nu ma insel, se verifica consecutiv fiecare alocare prin care se trece la rulare, dar acest lucru e limitat la 1000 de incercari.
>> In cazul meu, am numarat 1010 linii de eroare pana s-a oprit programul. Nu stiu de ce sunt 10 in plus, dar deduc ca la testul 38 fac mai mult de 1000 de alocari si checkerul nu continua verificarea mai departe de NR_RUNS=1000.
>>
>> E corecta presupunerea mea? Daca nu, din ce cauza ar putea sa apara problema pe care o am?
>>
>>
>> Multumesc,
>> Stefan Vodita
>> _______________________________________________
>> http://ocw.cs.pub.ro/courses/so/info/lista-discutii
>
> _______________________________________________
> http://ocw.cs.pub.ro/courses/so/info/lista-discutii



--
Răzvan Crainea
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://cursuri.cs.pub.ro/pipermail/so/attachments/20200310/efbb6edf/attachment.html>


More information about the so mailing list