Salut.

Mulțumesc ca ai semnalat. E posibil sa fie o inconsistenta între github și vmchecker trebuie sa o verific.

Cu stimă,
Mihai Bărbulescu


-------- Original Message --------
Subject: Re: [so] [Tema4][Linux] Memcheck failed
From: Rares Folea
To: Mihai Barbulescu
CC: Sisteme de Operare


Salut Mihai,

Testul 16) din setul de teste locale se refera la “Test Round Robin”, dar pe vmchecker, acest test are indentificatorul 15).
Referitor la modul de rulare, pe masina virtuala de linux rulam testul 16 astfel:

LD_LIBRARY_PATH=. valgrind --tool=memcheck ./_test/run_test 16

Outputul valgrind-ului este:
==16733== Memcheck, a memory error detector
==16733== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
==16733== Using Valgrind-3.15.0.GIT and LibVEX; rerun with -h for copyright info
==16733== Command: ./_test/run_test 16
==16733== 
Killed

Logurile de sistem ce apar indica:
Apr 24 20:09:14 vagrant kernel: [118109.973987] Out of memory: Kill process 16733 (memcheck-amd64-) score 863 or sacrifice child
Apr 24 20:09:14 vagrant kernel: [118109.976517] Killed process 16733 (memcheck-amd64-) total-vm:4716800kB, anon-rss:302812kB, file-rss:0kB, shmem-rss:0kB
Apr 24 20:09:14 vagrant kernel: [118110.013082] oom_reaper: reaped process 16733 (memcheck-amd64-), now anon-rss:0kB, file-rss:0kB, shmem-rss:0k

Acest comportament se manifesta doar pe masina virtuala care ruleaza pe calculatorul meu, doar pe testul 16. (celelalte teste nu dau erori la verificarea cu valgrind).




Dar pe vmchecker trec toate testele de memcheck. :)
Multumesc,
Rares




On 24 Apr 2019, at 14:30, Mihai Barbulescu <[email protected]> wrote:

Salut Rares,

Sunt mai multe chestii pe care nu le inteleg:

1. Cum adica test 16 (15 pe vm)? Ele au un identificator clar, deci nu
inteleg ce test pica
2. OOM manager din Linux da kill atunci cand se fac alocari (page
faults) excesive peste o limita setata daca imi amintesc bine de
ulimit. Eroarea pare una de vagrant, deci e posibil sa fi pornit
folosind vagrant masina si sa ti se fi dat kill la vagrant.

Ne dai atat de putine detalii despre cum rulezi incat nu putem face
altceva decat sa speculam mai ceva ca la bursa.

On Wed, 24 Apr 2019 at 10:16, Rares Folea via so <[email protected]> wrote:

Multumesc de hint.
Intradevar, problema era ca nu asteptam in toate scenariile, dupa toate threadurile.

Acum vad ca trec toate testele de memorie pe vmchecker.


Doar pe masina virtuala, cand rulez valgrind peste acel test 16 (15 pe vm), logurile de sistem indica out-of-memory:
Apr 24 10:11:14 vagrant kernel: [109075.123564] Out of memory: Kill process 11250 (memcheck-amd64-) score 866 or sacrifice child
Apr 24 10:11:14 vagrant kernel: [109075.124387] Killed process 11250 (memcheck-amd64-) total-vm:4736696kB, anon-rss:309400kB, file-rss:0kB, shmem-rss:0kB
Apr 24 10:11:14 vagrant kernel: [109075.153180] oom_reaper: reaped process 11250 (memcheck-amd64-), now anon-rss:0kB, file-rss:0kB, shmem-rss:0kB


On 23 Apr 2019, at 22:27, Razvan Crainea <[email protected]> wrote:

Salut, Rareș!

Cel mai probabil nu aștepți toate thread-urile, de acolo apare leak-ul.
Legat de faptul că că procesul este omorât, poți verifica log-urile de
sistem să te asiguri că nu este un crash?

Numai bine,
Răzvan

On Tue, Apr 23, 2019 at 9:10 PM Rares Folea via so <[email protected]> wrote:


Buna seara!

Ma confrunt cu urmatoarele probleme referitoare la testele de memorie:

La rularea pe masina virtuala cu valgrind a testelor 15 si 19 (14 si 18 pe vmchecker), obtin 2 erori similare:

==4684== 288 bytes in 1 blocks are possibly lost in loss record 2 of 2
==4684==    at 0x4C3204A: calloc (vg_replace_malloc.c:762)
==4684==    by 0x40134A6: allocate_dtv (dl-tls.c:286)
==4684==    by 0x40134A6: _dl_allocate_tls (dl-tls.c:530)
==4684==    by 0x5049227: allocate_stack (allocatestack.c:627)
==4684==    by 0x5049227: pthread_create@@GLIBC_2.2.5 (pthread_create.c:644)
==4684==    by 0x4E3E65B: so_fork (in /home/student/l3-so-assignments/4-scheduler/checker-lin/libscheduler.so)
==4684==    by 0x10ABDE: test_sched_handler_15 (test_exec.c:282)
==4684==    by 0x4E3E47E: start_thread (in /home/student/l3-so-assignments/4-scheduler/checker-lin/libscheduler.so)
==4684==    by 0x50486DA: start_thread (pthread_create.c:463)
==4684==    by 0x538188E: clone (clone.S:95)

==4684==      possibly lost: 576 bytes in 2 blocks

==4684== ERROR SUMMARY: 2 errors from 2 contexts (suppressed: 0 from 0)

Nu reusesc sa-mi dau seama de la ce ar putea fi cele doua erori si de ce se manifesta doar la aceste doua teste.
Mentionez ca astept terminarea thread-urilor cu pthread_join, care ar trebui sa efectueze eliberarea resurselor din structura pthread_t.
In plus, la testul 16 (15 vmchecker), se pare ca valgrind ocupa mult prea multa memorie locala, iar ca urmare este omorat.

student@vagrant:~/l3-so-assignments/4-scheduler/checker-lin$ LD_LIBRARY_PATH=. valgrind --tool=memcheck --track-origins=yes --leak-check=full _test/run_test 16
==4693== Memcheck, a memory error detector
==4693== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
==4693== Using Valgrind-3.15.0.GIT and LibVEX; rerun with -h for copyright info
==4693== Command: _test/run_test 16
==4693==
Killed


Multumesc
_______________________________________________
http://ocw.cs.pub.ro/courses/so/info/lista-discutii




--
Răzvan Crainea


_______________________________________________
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

Raspunde prin e-mail lui