Hi,
I have VDR 1.7.15 with two DVB-T budget cards and DXR3 video output..
I'm experiencing wierd lockups sometimes. I think there might be a hardware problem that really causes it, because even with earlier VDR versions I sometimes had "dead" dvb cards that needed a reboot to fix.. But this was easily fixed by "reboot" command in runvdr script, so the machine booted when vdr did emergency exit.
Anyway the current problem is that "emergency exit" doesn't really exit!
Oct 27 17:39:09 vdr vdr: [3215] ERROR: video data stream broken Oct 27 17:39:09 vdr vdr: [3215] initiating emergency exit Oct 27 17:39:40 vdr vdr: [3215] ERROR: video data stream broken Oct 27 17:39:40 vdr vdr: [3215] initiating emergency exit Oct 27 17:40:11 vdr vdr: [3215] ERROR: video data stream broken
This is just repeated over and over, but it doesn't really exit. It actually needs "killall -9 vdr" to quit vdr, normal kill isn't enough.
What's interesting, DXR3 output is stuck showing "Kanava ei ole käytettävissä" (Channel can't be used?) on black screen, and remote control doesn't work either.. So VDR is probably stuck in some deadlock? It doesn't use very much CPU time though.
If I disable emergency exit, it simply stays stuck with dead remote and black screen etc. :)
It might be a dxr3 problem, or what do you think? On my earlier setup with VDR 1.4.x, the same "video data stream broken" resulted in clean emergency exit, no such deadlock..
A bit more info into this.. I'm quite sure this is somehow caused by dxr3 plugin. There's always some message on screen when it hangs..
I can make vdr lockup like this:
svdrpsend.pl -p2001 MESG test
-"test" appears, no lockup yet
svdrpsend.pl -p2001 MESG test2
-"test" still shows, not "test2".. Wait a little, and vdr is locked and can only be killed with kill -9. Syslog shows:
Oct 29 07:59:15 vdr vdr: [2609] PANIC: watchdog timer expired - exiting! Oct 29 07:59:16 vdr lircd-0.8.4a[2479]: removed client
But as I said, it doesn't really exit, it just hangs.
Oh, and if I press "OK" on remote after the first message, everything works. This is why it never hangs when I'm actually watching the TV, I always press the button quickly enough. :)
-- Teemu
Hmm, I noticed that my OSD Flush time was set to 59 seconds in VDR settings.. If I drop that to some small value like 5 seconds, VDR doesn't hang anymore because the watchdog is not triggered for such a short time.
But still it is weird that VDR can't exit if there is a message on screen?
On Friday 29 October 2010, Teemu Suikki wrote:
Hmm, I noticed that my OSD Flush time was set to 59 seconds in VDR settings.. If I drop that to some small value like 5 seconds, VDR doesn't hang anymore because the watchdog is not triggered for such a short time.
No idea about the cause, but I'd like to point out that the value range for the dxr3 plugin's OSD flush rate is 0 to 255 _milli_seconds.
Hmm, I noticed that my OSD Flush time was set to 59 seconds in VDR settings.. If I drop that to some small value like 5 seconds, VDR doesn't hang anymore because the watchdog is not triggered for such a short time.
No idea about the cause, but I'd like to point out that the value range for the dxr3 plugin's OSD flush rate is 0 to 255 _milli_seconds.
Ah sorry my mistake. It's not OSD flush I was talking about, it's the vdr message display timeout or whatever.. :) For some reason I thought that was the "OSD flush" time.
Anyway, there's two separate bugs:
1) If the message display time is over 30sec, the watchdog will timeout if there is another message in the queue waiting to be displayed.
2) VDR deadlocks when it tries to panic exit on that situation..
This could be a bug in VDR and not dxr3 plugin, though.
Now I have the message display time set at 5 secs and it hasn't frozen for several days now, so perhaps there's no reason to bother with this bug. :) Easy fix would be to limit the message display time to 15secs for example, so user can't set it too high by accident.
On 01.11.2010 20:50, Teemu Suikki wrote:
Hmm, I noticed that my OSD Flush time was set to 59 seconds in VDR settings.. If I drop that to some small value like 5 seconds, VDR doesn't hang anymore because the watchdog is not triggered for such a short time.
No idea about the cause, but I'd like to point out that the value range for the dxr3 plugin's OSD flush rate is 0 to 255 _milli_seconds.
Ah sorry my mistake. It's not OSD flush I was talking about, it's the vdr message display timeout or whatever.. :) For some reason I thought that was the "OSD flush" time.
Anyway, there's two separate bugs:
- If the message display time is over 30sec, the watchdog will
timeout if there is another message in the queue waiting to be displayed.
- VDR deadlocks when it tries to panic exit on that situation..
This could be a bug in VDR and not dxr3 plugin, though.
Now I have the message display time set at 5 secs and it hasn't frozen for several days now, so perhaps there's no reason to bother with this bug. :) Easy fix would be to limit the message display time to 15secs for example, so user can't set it too high by accident.
But this would also mean that there would have to be a lower limit to the watchdog timer that is larger than this limit.
The original problem is apparently some deadlock in the area of cSkins::ProcessQueuedMessages(). As you already found out it only happens if the message timeout exceeds the watchdog timeout. However, I would actually expect that to work, because AFAICS there is no place where VDR actively waits for the message timeout, so the main program loop should be still running if a message is displayed.
I'm afraid I don't have the time to dig into this now. If the message timeout is small compared to the watchdog timeout, all is fine. If somebody can point out where the deadlock happens, I would appreciate that.
Klaus