Thread: [Kaffeine-devel] dvb channel change race hangs and a patch
Brought to you by:
hftom,
lasselindqvist
From: Jani J. <jja...@cs...> - 2007-11-25 23:09:17
Attachments:
kaffeine-dvb.patch
|
The latest svn version of kaffeine sometimes hangs when changing dvb channels. This seems to be because of racy use of QThread::terminate() in the dvb code. I patched the dvbout thread to use nonblocking IO when writing to the dvb fifo, which means that the thread will always terminate cleanly when requested. So QThread::terminate() is not needed anymore. I also somewhat simplified the code and got rid of some unneeded state in dvbout-class. The attached patch is also available from: http://www.cs.helsinki.fi/u/jjaakkol/tmp/kaffeine-dvb.patch Thanks for kaffeine! - Jani |
From: Mario R. <mar...@go...> - 2007-11-26 21:25:05
Attachments:
dvb_stop.patch
|
Jani Jaakkola wrote: > The latest svn version of kaffeine sometimes hangs when changing > dvb channels. This seems to be because of racy use of QThread::terminate() > in the dvb code. I patched the dvbout thread to use nonblocking IO when > writing to the dvb fifo, which means that the thread will always terminate > cleanly when requested. So QThread::terminate() is not needed anymore. I > also somewhat simplified the code and got rid of some unneeded state in > dvbout-class. I agree. I'm so happy someone else is saying it. I've had a similar issue (kaffeine freezing) when stopping the DVB channels search. http://sourceforge.net/mailarchive/message.php?msg_id=53d94280611291407n1286a2fau671386c68adffdfa%40mail.gmail.com I did not get much from the mailing list. I attach what is the same patch I sent a while ago to remove all QThread::terminate() from DVBsi and replace it with a cooperative way of asking a thread to terminate. > > The attached patch is also available from: > http://www.cs.helsinki.fi/u/jjaakkol/tmp/kaffeine-dvb.patch > > Thanks for kaffeine! > > - Jani I will try immediately. Cheers |
From: Mario R. <mar...@go...> - 2007-11-26 21:45:32
|
Jani Jaakkola wrote: > The latest svn version of kaffeine sometimes hangs when changing > dvb channels. This seems to be because of racy use of QThread::terminate() > in the dvb code. I patched the dvbout thread to use nonblocking IO when > writing to the dvb fifo, which means that the thread will always terminate > cleanly when requested. So QThread::terminate() is not needed anymore. I > also somewhat simplified the code and got rid of some unneeded state in > dvbout-class. > > The attached patch is also available from: > http://www.cs.helsinki.fi/u/jjaakkol/tmp/kaffeine-dvb.patch > > Thanks for kaffeine! It works. But I can't really say yet whether it stops the freeze. I can't reproduce it very easily. Sometimes I stay a week without a problem, then suddenly it hangs a few times in a row. Do you know what makes the hang more frequent? |
From: Jani J. <jja...@cs...> - 2007-11-27 05:48:51
|
On Mon, 26 Nov 2007, Mario Rossi wrote: > Do you know what makes the hang more frequent? Maybe my dual core CPU? - Jani |
From: Mario R. <mar...@go...> - 2007-11-27 21:13:44
|
Jani Jaakkola wrote: > On Mon, 26 Nov 2007, Mario Rossi wrote: > >> Do you know what makes the hang more frequent? > > Maybe my dual core CPU? > > - Jani > > Good point... but I cannot try it... |