[so] Tema 3 - Stack smashing detected

Adrian Stanciu adrian.stanciu.pub at gmail.com
Tue Apr 12 23:55:59 EEST 2016


2016-04-12 23:24 GMT+03:00 Marculescu Cristian via so <so at cursuri.cs.pub.ro>:
> 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


More information about the so mailing list