mała łatka na wyciek wątków w xine-lib

Piotr Pawłow pp w siedziba.pl
Czw, 10 Mar 2005, 21:01:10 CET


Witam,

Podsyłam łatkę, która trafiła kilka dni temu do CVS-u Xine. Poprawia problem, 
który ostatnio bardzo dał mi się we znaki, uniemożliwiając odtworzenie do 
końca dłuższej playlisty.

Do demuksowania mediów xine-lib używa osobnego wątku, który tworzony jest jako 
"joinable". Oznacza to, że niektóre zasoby wątku nie są zwalniane po 
zakończeniu jego pracy do momentu, aż inny wątek nie wykona na nim 
pthread_join. Błąd polega na tym, że pthread_join nie jest wykonywany na  
wątku demuksera, jeśli ten napotka koniec danych i samoistnie zakończy pracę. 
Aby to sprawdzić, wystarczy wziąść jakiś krótki plik audio/video, i utworzyć 
z niego długą playlistę. Proces xine powinien rosnąć ok.8MB na każdy plik.

Załączona łatka przenosi fatalną linijkę w demux.c - zerującą demux_thread i 
uniemożliwiającą wykonanie pthread_join - z wątku demuksera we właściwe 
miejsce (zaraz po join), oraz poprawia logikę sterującą w xine.c.

Nie stwierdziłem żadnych problemów po jej nałożeniu. Sądzę, że można spokojnie 
dorzucić ją na koniec do xine-lib.spec.

Pozdrawiam,
-- 
 Piotr Pawłow
 mailto:pp w siedziba.pl
-------------- następna część ---------
Załącznik, który nie był tekstem został usunięty...
Name: xine-lib-pthread_leak.patch
Type: text/x-diff
Size: 1912 bytes
Desc: nie znany
Url : /mailman/pipermail/pld-devel-pl/attachments/20050310/4744c699/xine-lib-pthread_leak.bin


Więcej informacji o liście dyskusyjnej pld-devel-pl