2016-04-12 23:24 GMT+03:00 Marculescu Cristian via so <[email protected]>: > Buna seara, > > Am intampinat o problema pe vmchecker la incarcarea temei 3. > Local, imi trec toate testele (am testat inclusiv pe masina virtuala). Cu > toate acestea, pe vmchecker primesc o eroare "stack smashing detected", > primesc timeout pe majoritatea testelor si obtin doar 60/90 de puncte. > Am incercat sa caut o solutie pe internet, am gasit pe stack overflow o > descriere a problemei, insa nu prea mi-a fost de mare ajutor. > Ce imi puteti recomanda sa fac pentru a rezolva problema? >
Salut, Ți se întâmplă asta pentru că nu ai respectat interfața [1] pe care biblioteca trebuie să o expună. Ai schimbat tipul parametrului map din vm_alloc(). Când checker-ul iți dă ca parametru la vm_alloc() un pointer la un obiect de tipul struct vm_map pentru a-l completa, acel obiect e de tipul definit în interfață, deci va fi o zonă de memorie ce contine un w_ptr_t urmat de două w_handle_t. Tu însă interpretezi acea zona de memorie sub forma structurii vm_map modificată de tine, deci se vor aplica alte offset-uri pentru câmpurile start, ram_handle și swap_handle. Din cauza asta ajungi să scrii în alte zone de memorie, de unde și eroarea. Recomandarea din enunț era să nu modifici structura vm_map, dar dacă vrei să o modifici adaugă noile câmpuri la finalul structurii. Astfel, offset-urile câmpurilor de interes pentru checker se vor potrivi. [1] http://ocw.cs.pub.ro/courses/so/teme/tema-3#interfata_bibliotecii Adrian _______________________________________________ http://ocw.cs.pub.ro/courses/so/info/lista-discutii
