Consider ca am spus sugestia mai sus: ruleaza folosind gdb exact testul pe care l-ai rulat cu valgrind (foloseste cgdb are interfata mai draguta).
Probabil ai bug in bucla din print_bucket cand iterezi pe lista inlantuita, pune si tu un breakpoint pe-acolo. Ai alocat memorie pt nodul din lista? De asemenea, vezi ca submisia e gresita si am observat in general greseala asta la studenti: nu trebuie sa submitesti hash.c si sa il compilati sau sa generati biblioteca din el, cititi urmatoarea specificatie din enunt cu maxima atentie: Antetul funcției de hash ce trebuie folosită (în întreaga temă) este declarat în hash.h. Definiția funcției se găsește într-o bibliotecă dinamică (libhash.so pentru Linux, respectiv hash.dll pentru Windows). Va trebui să linkați în tema voastră aceste biblioteci. Este interzisă folosirea unei alte funcții hash scrisă prin surse. Nu includeți bibliotecile în arhiva finală a temei. IMPORTANT: bibliotecile au fost compilate folosind mașinile virtuale, care sunt cu arhitectura pe 32-bit. Dacă dezvoltați pe mașina locală e posibil să vă apară erori de incompatibiltate. Nu submiteți nici sursa originală a hash.c și vă bazați implementarea pe acesta. Sursa este oferită pentru a vă putea regenera local bibliotecile pentru dezvoltare în cazul erorilor de incompatibilitate. hash.c v-a fost dat ca sa puteti dezvolta pe masinile voastre ale caror arhitecturi nu le stapanim iar masinile virtuale de so sunt 32-bit iar pe linux apare eroare wrong ELFCLASS daca nu v-am fi dat si sursa sa dezvoltati in mediul in care va e voua usor. 2017-03-14 21:12 GMT+02:00 Ionutz Sc <[email protected]>: > Intr-adevar, am folosit acea optiune si acum nu mai apare stack smashing. > Vreo sugestie in vederea repararii problemei? > Multumesc anticipat! > > > ________________________________ > From: Mihai Barbulescu <[email protected]> > To: Sisteme de Operare <[email protected]>; Ionutz Sc > <[email protected]> > Sent: Tuesday, March 14, 2017 9:04 PM > Subject: Re: [so] [Tema1][Linux] stack smash detected > > Problema e ca ai buffer overflow și nu memory leaks. Undeva faci un acces > peste dimensiunea stivei > > Poti dezactiva temporar mecanismul din gcc folosind opțiunea nepermisa > -fno-stack-protector și sa vezi dacă dispare > > Valgrind nu e capabil sa detecteze asa ceva. Baga cu gdb pe acel print > problema după ce ai compilat fără opțiunea de care zic > > On 14 Mar 2017 20:44, "Ionutz Sc via so" <[email protected]> wrote: > > Buna seara, > > Pe linux, cand testez tema cu comanda "valgrind ./tema1 256 < date.in" > (date.in contine primele 3 linii din testul 22), valgrind nu seziseaza > niciun leak de memorie: > All heap blocks were freed -- no leaks are possible > ERROR SUMMARY: 0 errors from 0 contexts (suppressed: 0 from 0) > insa la output apare si *** stack smashing detected ***: ./tema1 terminated > Nu reusesc sa-mi dau seama ce anume provoaca stack smashing-ul. > Am testat in loc de linia cu print_bucket si cu un sir de caractere random > de genul: > asdadfasda asdasdasdasd asdasdasdasd > Am observat ca daca las doar 2 cuvinte random pe acea linie, nu face stack > smashing, doar cu 3 face. > Multumesc anticipat! > > Cu stima, > Ionut Niculici > > ______________________________ _________________ > http://ocw.cs.pub.ro/courses/ so/info/lista-discutii > > > -- Cu stimă, Mihai Bărbulescu _______________________________________________ http://ocw.cs.pub.ro/courses/so/info/lista-discutii
