<div dir="ltr"><br><br><div class="gmail_quote"><div dir="ltr">On Sat, May 12, 2018 at 4:20 PM Alexandru Militaru via so <<a href="mailto:so@cursuri.cs.pub.ro">so@cursuri.cs.pub.ro</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Salut,<div><br></div><div>Am următoarea problemă la testul 10: deși thread-ul master trebuie să apeleze so_fork() de un număr random de ori, după un număr variabil de apeluri ale funcției (diferă în funcției de rulare) el rămâne blocat. Am verificat atent și thread-ul master nu este preemptat: nu îi expiră cuanta și nici nu este dat la o parte de un proces mai prioritar. Pur și simplu după un număr de apeluri se blochează.  </div></div></blockquote><div><br></div><div>În ce anume se blochează? </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><br></div><div>Deși pare a fi deadlock, thread-ul master și celelalte thread-uri nu interacționează cu niciun lock comun. Thread-urile worker așteaptă să ruleze, în timp ce thread-ul master este singurul care lucrează. Cu toate acestea, el se blochează la un moment dat și nu trece mai departe. Nu se blochează în so_fork, se blochează după ce iese din această funcție.</div></div></blockquote><div><br></div><div>Atașează-te cu gdb la thread-ul blocat și vezi în ce anume este blocat. Apoi, verifică cine mai lucrează cu acel loc și care sunt cazurile în care nu-l eliberează corect. </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div> </div><div><br></div><div>Care ar putea fi problema?</div><div><br></div><div>Am încărcat codul pe gitlab. Userul meu este cmilitaru2501.</div></div></blockquote><div><br></div><div>Numai bine,</div><div>Răzvan </div></div></div>