<div dir="ltr"><div><div>Problema era ca alocam (cu calloc) un char *buffer dupa ce apelam VirtualAlloc si setam pointerul de start.<br><br></div>Singura
 explicatie pentru acest comportament ar fi ca calloc-ul mapa memorie 
peste memoria mea, dar e o explicatie fabricata de mine. Poate cineva sa
 ofere o explicatie mai buna?<br><br></div>Alin-Gabriel Gheorghe 331CA</div><div class="gmail_extra"><br><div class="gmail_quote">În data de 13 aprilie 2016, 11:12, Adrian Stanciu <span dir="ltr"><<a href="mailto:adrian.stanciu.pub@gmail.com" target="_blank">adrian.stanciu.pub@gmail.com</a>></span> a scris:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">2016-04-13 11:02 GMT+03:00 Alexandru Jercaianu via so <<a href="mailto:so@cursuri.cs.pub.ro">so@cursuri.cs.pub.ro</a>>:<br>
> Salut,<br>
><br>
> Memoria eliberata cu VirtualFree trebuie sa fi fost alocată cu VirtualAlloc.<br>
> Probabil apelezi VirtualFree peste ceva alocat cu MapViewOfFile. Aveam<br>
> aceeași problema.<br>
><br>
> Alex Jercaianu<br>
><br>
> Buna seara,<br>
><br>
> Am intampinat o problema la rularea testelor pe masina virtuala. Se pare ca<br>
> in functia vm_free() are un comportament nedeterminist, in sensul ca la<br>
> rularea checker-ului se activeaza un DIE din acea functie aleator<br>
> (intotdeauna unul ce contine un VirtualFree). Am incercat sa rulez separat<br>
> testele care pica asa si am constatat ca uneori dau fail (cu eroarea de mai<br>
> sus) si alteori pass fara probleme.<br>
><br>
> Mentionez ca local, pe sistemul meu de operare (Windows 7 x64), testele trec<br>
> fara probleme la rulari succesive. De asemenea, mentionez si ca nu am<br>
> implementat functionalitate pentru mai multe apeluri vm_alloc() (sa fie oare<br>
> de la asta?).<br>
><br>
> Stie cineva care ar putea fi problema?<br>
><br>
<br>
</span>Salut,<br>
<br>
Pe lângă recomandarea lui Alex, să faci toți pașii de rezervare a<br>
paginilor virtuale unul după celălalt. Din ce văd în cod după ce<br>
eliberezi spațiul mare și până faci alocarea pagină cu pagină, mai<br>
faci unele alocări de memorie ce pot să fie plasate în spațiul ce îl<br>
vrei rezervat pentru paginile virtuale. Verifică dacă unele<br>
VirtualAlloc() dau eroare. Cred că de aici e comportamentul<br>
nedeterminist (depinde unde se fac acele alocări intermediare).<br>
<br>
Dacă nu e de la asta, să-mi spui.<br>
<span class="HOEnZb"><font color="#888888"><br>
Adrian<br>
</font></span></blockquote></div><br></div>