<div dir="ltr">Am rezolvat pana la urma, in functia de distrugere a listei nu trimiteam<div>list_head-ul acesteia ca pointer.</div><div><br></div><div>Multumesc frumos pentru raspuns,</div><div>Diana</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Mar 27, 2020 at 12:15 PM Daniel Baluta <<a href="mailto:daniel.baluta@gmail.com">daniel.baluta@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">On Fri, Mar 27, 2020 at 11:43 AM Diana Grecu via so2<br>
<<a href="mailto:so2@cursuri.cs.pub.ro" target="_blank">so2@cursuri.cs.pub.ro</a>> wrote:<br>
><br>
> Buna,<br>
><br>
> Am o problema cu un deadlock la partea de stergere a unui proces din hashtable.<br>
><br>
> In structura pentru un element din hashtable tin si o lista pentru asocierile adresa de inceput - dimensiune, iar cand se apeleaza functia de stergere pentru un anumit pid, inainte de a da hash_del pe element, vreau sa distrug si lista corespunzatoare lui.<br>
><br>
> La partea asta apare deadlock-ul. Am crezut initial ca este din cauza faptului ca apelez kfree pentru eliberarea memoriei elementelor din lista, dar pana la urma am vazut ca si daca las pur si simplu doar iteratia cu list_for_each_safe, fara nimic altceva in interiorul ei, se intampla acelasi lucru; daca scot parcurgerea listei nu mai e nicio problema.<br>
><br>
> Nu incerc sa iau de 2 ori acelasi lock, pentru ca fiecare lista are un lock asociat ei si nu imi dau seama de la ce ar putea sa apara problema.<br>
><br>
> Are cineva vreo idee?<br>
<br>
Lockdep nu zice nimic? Ar trebui sa fie deja activat in setup-ul cu qemu.<br>
Ar trebui sa-ti apara ceva pe consola seriala.<br>
<br>
Ce lock-uri ai?<br>
1) lock pentru bucket din hashtable<br>
2) lock pentru lista [addresa ..size]<br>
<br>
In ce ordine le iei?<br>
</blockquote></div>