Mailing List archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[linux-dvb] Re: stability problems + closing and re-opening the frontend



> You shouldn't be able to break the driver from userspace 
> though; I'll take a 
> look if the snapshot I just sent you doesn't help.

Nope, exactly the same behaviour: first iteration works as a charm, second iteration timeouts waiting for data. I've put the logs given by dvb_debug_frontend=1 at the end of this email. The only difference I've seen is a faster time for the first data acquisition. Before, I was waiting around 2 seconds before receiving the first packets. Good improvement!

I even discovered another weird behaviour. I run my test and let it finish the first iteration, then kill it while it sleeps. If I restart it before dvb_shutdown_timeout, then I get an "operation not permitted" when I call "select" on the demux. I think it's a problem introduced in the new version Andrew gave me (fresh CVS).

Regarding my first problem (in my full application, I cannot re-open the frontend at all, even right after the close), I found the source of my problem: I fork a few child process and the increases the "writers" counter on the frontend file descriptor. Therefore, when a close the frontend from the parent, it's not really closed because the child processes still have a reference on that file. Stupid me.

So I remain with three problems:

  1) frontend lost (cannot tune) if I re-open it from the same process after dvb_shutdown_timeout.
  2) frontend lost (operation not permitter on "select") if I re-open it from a another process before dvb_shutdown_timeout.
  3) frontend lost (cannot tune) after around 1000 tune-read cycles ().

Doesn't anybody sees the same problems? At least for #3 I know I'm not alone...

Thanks.


----------------------  logs for a usual run of my test program
Apr  7 13:39:54 pc0125 kernel: dvb_frontend_open                            <-- where I open the frontend
Apr  7 13:39:54 pc0125 kernel: dvb_frontend_start
Apr  7 13:39:54 pc0125 kernel: dvb_frontend_thread
Apr  7 13:39:54 pc0125 kernel: dvb_call_frontend_notifiers
Apr  7 13:39:54 pc0125 kernel: dvb_frontend_ioctl
Apr  7 13:39:54 pc0125 kernel: DVB: initialising frontend 0:0 (STV0299/TSA5059/SL1935 based)...
Apr  7 13:39:54 pc0125 kernel: dvb_frontend_internal_ioctl
Apr  7 13:39:54 pc0125 kernel: dvb_frontend_internal_ioctl
Apr  7 13:39:54 pc0125 kernel: dvb_frontend_ioctl
<...>
Apr  7 13:39:54 pc0125 kernel: dvb_frontend_add_event
Apr  7 13:39:54 pc0125 kernel: dvb_call_frontend_notifiers
Apr  7 13:39:54 pc0125 kernel: dvb_frontend_internal_ioctl
Apr  7 13:39:54 pc0125 kernel: dvb_frontend_add_event
Apr  7 13:39:54 pc0125 kernel: dvb_call_frontend_notifiers
Apr  7 13:39:54 pc0125 kernel: dvb_frontend_autotune: drift:0 bending:0 inversion:0 auto_step:0 auto_sub_step:0 started_auto_step:0
Apr  7 13:39:54 pc0125 kernel: dvb_frontend_internal_ioctl
Apr  7 13:39:54 pc0125 kernel: dvb_frontend_internal_ioctl
Apr  7 13:39:54 pc0125 kernel: dvb_frontend_add_event
Apr  7 13:39:54 pc0125 kernel: dvb_frontend_internal_ioctl
Apr  7 13:39:54 pc0125 kernel: dvb_call_frontend_notifiers
Apr  7 13:39:54 pc0125 kernel: update_delay
Apr  7 13:39:54 pc0125 kernel: dvb_frontend_release                         <-- where I close the frontend
Apr  7 13:39:55 pc0125 kernel: dvb_frontend_internal_ioctl                  
<...>                                                                       <-- it goes like that for 6 seconds
Apr  7 13:39:59 pc0125 kernel: update_delay
Apr  7 13:40:00 pc0125 kernel: dvb_frontend_internal_ioctl
Apr  7 13:40:04 pc0125 kernel: dvb_frontend_open                            <-- end of sleep and re-open
Apr  7 13:40:04 pc0125 kernel: dvb_frontend_start
Apr  7 13:40:04 pc0125 kernel: dvb_frontend_thread
Apr  7 13:40:04 pc0125 kernel: dvb_call_frontend_notifiers
Apr  7 13:40:04 pc0125 kernel: dvb_frontend_ioctl
Apr  7 13:40:04 pc0125 kernel: dvb_frontend_internal_ioctl
Apr  7 13:40:04 pc0125 kernel: DVB: initialising frontend 0:0 (STV0299/TSA5059/SL1935 based)...
Apr  7 13:40:04 pc0125 kernel: dvb_frontend_internal_ioctl
Apr  7 13:40:04 pc0125 kernel: dvb_frontend_ioctl
<...>
Apr  7 13:40:04 pc0125 kernel: dvb_frontend_internal_ioctl
Apr  7 13:40:04 pc0125 kernel: dvb_frontend_add_event
Apr  7 13:40:04 pc0125 kernel: dvb_call_frontend_notifiers                 <-- where the FE looses its mind
Apr  7 13:40:04 pc0125 kernel: dvb_frontend_autotune: drift:0 bending:0 inversion:0 auto_step:0 auto_sub_step:0 started_auto_step:0
Apr  7 13:40:04 pc0125 kernel: dvb_frontend_internal_ioctl
Apr  7 13:40:05 pc0125 kernel: dvb_frontend_internal_ioctl
Apr  7 13:40:05 pc0125 kernel: dvb_frontend_autotune: drift:0 bending:0 inversion:1 auto_step:0 auto_sub_step:1 started_auto_step:0
Apr  7 13:40:05 pc0125 kernel: dvb_frontend_internal_ioctl
Apr  7 13:40:05 pc0125 kernel: dvb_frontend_internal_ioctl
Apr  7 13:40:05 pc0125 kernel: dvb_frontend_autotune: drift:1718 bending:0 inversion:1 auto_step:1 auto_sub_step:0 started_auto_step:0
Apr  7 13:40:05 pc0125 kernel: dvb_frontend_internal_ioctl
Apr  7 13:40:05 pc0125 kernel: dvb_frontend_internal_ioctl
Apr  7 13:40:05 pc0125 kernel: dvb_frontend_autotune: drift:1718 bending:0 inversion:0 auto_step:1 auto_sub_step:1 started_auto_step:0
<... keep on going like that until kill+dvb_shutdown_timeout ...>


-- 
Info:
To unsubscribe send a mail to ecartis@linuxtv.org with "unsubscribe linux-dvb" as subject.



Home | Main Index | Thread Index