[so2] [Tema1] Problema sincronizare

Daniel Baluta daniel.baluta at gmail.com
Fri Mar 27 12:15:12 EET 2020


On Fri, Mar 27, 2020 at 11:43 AM Diana Grecu via so2
<so2 at cursuri.cs.pub.ro> wrote:
>
> Buna,
>
> Am o problema cu un deadlock la partea de stergere a unui proces din hashtable.
>
> 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.
>
> 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.
>
> 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.
>
> Are cineva vreo idee?

Lockdep nu zice nimic? Ar trebui sa fie deja activat in setup-ul cu qemu.
Ar trebui sa-ti apara ceva pe consola seriala.

Ce lock-uri ai?
1) lock pentru bucket din hashtable
2) lock pentru lista [addresa ..size]

In ce ordine le iei?


More information about the so2 mailing list