Andrei - Cristian PAVEL <andrei.pavel@...> writes: > > Salut. > > Obțin segmentation fault la testele care au în comun cel puțin un apel so_fork() în handlerul dat ca > argument altui so_fork(), deci toate fără testul 1 și testul 3. so_fork() se apelează cu succes prima > dată, de ce nu s-ar întâmplat și a doua oară? Depanarea îmi arată că problema este la dealocarea > stivei în cadrul funcției pthread_join(), de fiecare dată[1]. > > Fac join în funcția de rutină a threadului pentru threadul curent și în so_end() pentru toate > threadurile. Google nu știe despre problema mea. În pagina de manual pthread_join[2], scrie că > joinuri făcute pe același thread de către mai multe threaduri, în același timp, are comportament > nedefinit însă nu știu cum să evit asta sau dacă asta se întâmplă în cazul meu. Care ar putea fi problema? > > [1] http://pastebin.com/W28TEq3Y > [2] http://man7.org/linux/man-pages/man3/pthread_join.3.html > -- > Andrei Pavel > > _______________________________________________ > http://ocw.cs.pub.ro/courses/so/info/lista-discutii
Eu fac join doar in end, si nu apar probleme. In functia de rutina ar trebui sa ai doar apelarea scheduler-ului, apelarea handler-ului si pthread exit. Poate de acolo e problema. Incearca sa faci asteptarea cu mecanisme IPC (gen varibile de conditie), si nu cu join. _______________________________________________ http://ocw.cs.pub.ro/courses/so/info/lista-discutii
