[so] [Tema3][Windows] Problema rulare teste - masina virtuala
Adrian Stanciu
adrian.stanciu.pub at gmail.com
Wed Apr 13 11:28:55 EEST 2016
2016-04-13 11:17 GMT+03:00 Alin Gabriel Gheorghe
<gheorghealingabriel at gmail.com>:
> Problema era ca alocam (cu calloc) un char *buffer dupa ce apelam
> VirtualAlloc si setam pointerul de start.
>
> 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?
>
E o problemă, deoarece zona este eliberată și alocările tale pot să fi
făcute acolo. Mai târziu, te aștepți să o poți rezerva din nou.
Rezervarea pagină cu pagină trebuie făcută imediat după eliberarea
zonei mari.
Încă ai unele alocări intermediare ce îți pot face probleme.
PS: folosiți bottom-posting [1] în discuțiile de pe listă pentru o
citire mai ușoară a intervențiilor
>
> În data de 13 aprilie 2016, 11:12, Adrian Stanciu
> <adrian.stanciu.pub at gmail.com> a scris:
>>
>> 2016-04-13 11:02 GMT+03:00 Alexandru Jercaianu via so
>> <so at cursuri.cs.pub.ro>:
>> > Salut,
>> >
>> > Memoria eliberata cu VirtualFree trebuie sa fi fost alocată cu
>> > VirtualAlloc.
>> > Probabil apelezi VirtualFree peste ceva alocat cu MapViewOfFile. Aveam
>> > aceeași problema.
>> >
>> > Alex Jercaianu
>> >
>> > Buna seara,
>> >
>> > Am intampinat o problema la rularea testelor pe masina virtuala. Se pare
>> > ca
>> > in functia vm_free() are un comportament nedeterminist, in sensul ca la
>> > rularea checker-ului se activeaza un DIE din acea functie aleator
>> > (intotdeauna unul ce contine un VirtualFree). Am incercat sa rulez
>> > separat
>> > testele care pica asa si am constatat ca uneori dau fail (cu eroarea de
>> > mai
>> > sus) si alteori pass fara probleme.*
>> >
>> > Mentionez ca local, pe sistemul meu de operare (Windows 7 x64), testele
>> > trec
>> > fara probleme la rulari succesive. De asemenea, mentionez si ca nu am
>> > implementat functionalitate pentru mai multe apeluri vm_alloc() (sa fie
>> > oare
>> > de la asta?).
>> >
>> > Stie cineva care ar putea fi problema?
>> >
>>
>> Salut,
>>
>> Pe lângă recomandarea lui Alex, să faci toți pașii de rezervare a
>> paginilor virtuale unul după celălalt. Din ce văd în cod după ce
>> eliberezi spațiul mare și până faci alocarea pagină cu pagină, mai
>> faci unele alocări de memorie ce pot să fie plasate în spațiul ce îl
>> vrei rezervat pentru paginile virtuale. Verifică dacă unele
>> VirtualAlloc() dau eroare. Cred că de aici e comportamentul
>> nedeterminist (depinde unde se fac acele alocări intermediare).
>>
>> Dacă nu e de la asta, să-mi spui.
>>
[1] http://ocw.cs.pub.ro/courses/so/info/lista-discutii#inlineinterleaved_posting
Adrian
More information about the so
mailing list