Nu mai contează. Noul checker a rezolvat problema asta. În joi, 2 mai 2019 la 23:42, Ionuț Mihalache <[email protected]> a scris:
> Numărul de thread-uri din acest test este foarte mare? helgrind îmi spune > că anumite thread-uri dau failed la pthread_create() sau poate este de la > mine. Ideea este că testul durează foarte mult și am avut impresia că am > deadlock însă dacă îl las să ruleze apare eroarea asta "Thread #300's call > to pthread_create failed with error code 11 (EAGAIN: Try again)". 300 nu > este relevant, doar am ales una dintre erori. > > În sâm., 27 apr. 2019 la 20:21, Paul Olaru via so <[email protected]> > a scris: > >> Deci va trebui să fac join early, că join la final face Valgrind să >> consume mai mult de 1.5 GB de memorie și deci să-și ia OOM kill... >> Probabilistic. >> >> On Sat, Apr 27, 2019, 8:19 PM Razvan Crainea <[email protected]> >> wrote: >> >>> On Sat, Apr 27, 2019 at 6:25 PM Paul Olaru via so <[email protected]> >>> wrote: >>> > >>> > Îmi poate oferi cineva o idee prin care pot găsi motivul pentru care >>> primesc mesajul de eroare „task was not preempted” la unele execuții? Sau >>> ce să verific în codul meu? Test round robin. >>> Eroarea "task was not preempted" o primești atunci când un task >>> ruleaza mai mult decât cuanta maximă, și scheduler-ul tău nu îl >>> preemptează ca să poată rula un alt thread cu aceeași prioritate. >>> > >>> > >>> > >>> > Când ar trebui să se facă preempția în so_signal, cea cauzată de >>> expirarea cuantei? Înainte sau după semnalizare? Similar pentru so_fork: >>> înainte sau după lansarea threadului? [la mine oricum inițializarea >>> structurilor noului thread se întâmplă sincron cu apelul so_fork]. >>> so_signal() este în sine o instrucțiune, care consumă timp pe >>> procesor. Instrucțiunile sunt considerate atomice, astfel încât cuanta >>> de timp este considerată expirată după ce întreaga instrucțiune s-a >>> executat. Așadar, preempția în so_signal() ar trebui să se facă după >>> semnalizare. La fel și la so_fork, preempția se face după terminarea >>> inițializării, dar înainte de a rula handler-ul. >>> > >>> > >>> > >>> > (bănuiesc că nu ar trebui să-mi încerc norocul pe VMchecker gen „tura >>> asta merge”, dat fiind că problema apare la sub 10% din rulări). >>> Nu, n-ar trebui să îți încerci norocul. >>> > >>> > >>> > >>> > (în urma discuției din alt thread, mașina virtuală de SO are 1.5GB pe >>> sistemul meu în loc de cei 512MB pe care îi are by default). >>> Recomandăm să nu modifici mașina virtuală, altfel vei avea diferențe >>> între rularea pe mașina ta virtuală și mașina de pe vmchecker. >>> >>> Numai bine, >>> Răzvan >>> >> _______________________________________________ >> http://ocw.cs.pub.ro/courses/so/info/lista-discutii > >
_______________________________________________ http://ocw.cs.pub.ro/courses/so/info/lista-discutii
