manio / vdr-plugin-dvbapi

VDR dvbapi plugin for use with OSCam
http://www.streamboard.tv/wbb2/thread.php?threadid=40060
GNU General Public License v2.0
57 stars 25 forks source link

vdr hangs when switching dead channels #33

Closed MegaV0lt closed 11 years ago

MegaV0lt commented 11 years ago

when switching to dead or not broadcasting channels vdr often gets unresponsible and resulting in a final segfault. this is not happening with sc. i provide a log here: https://www.dropbox.com/s/v93o6kl8jdhpbmq/vdr.log

a big logpack from my distribution: https://dl.dropboxusercontent.com/u/1490505/VDR/dvbapi/g2v_log_08291510.tar.xz <- should also contain coredump

Using Gen2VDR V4 and VDR 2.1.1

manio commented 11 years ago

According to your log and dump the dvbapi plugin was working ok when vdr crashed (i can see that it was constantly trying to obtain PMT). The problem occur in section handler which is a vdr internal:

Aug 29 15:10:11 [kernel] section handler[3262]: segfault at 3a29 ip 000000000056291a sp 00007fdc7b7fc530 error 4 in vdr[400000+1c9000]

and in gdb:

Program terminated with signal 11, Segmentation fault.
#0  0x000000000056291a in cHashBase::Get (this=0x7fdc802c5438, Id=1377792000) at tools.c:2113

I am not 100% sure but for me this doesn't seem as a dvbapi plugin problem. Consider reporting it to vdr mail list (attach a backtrace you provided). For now closing - please reopen if necessary.

Yuri666 commented 11 years ago

I conform this issue with dvbapi plugin 1.0.5. vdr hangs after freeze. But with dvbapi ver. 1.0.4 all ok.

This patch SCCAMSlot.cpp helped me, freezes are gone: minus if (ci_cmd == 0x01 || (ci_cmd == -1 && (ca_lm == 0x03 || ca_lm == 0x04 || ca_lm == 0x05))) plus if (ci_cmd == 0x01 || (ci_cmd == -1 && (ca_lm == 0x04 || ca_lm == 0x05)))

manio commented 11 years ago

@MegaV0lt Can you try version 1.0.4 whether it resolve your problem?

@Yuri666 Please provide me a log when this issue occured to you (on 1.0.4). Or maybe you can give me detailed steps to reproduce it.

Yuri666 commented 11 years ago

On 1.0.4 issue not present. On 1.0.5 if i switch to scrambled channel which gone from transponder, but still in vdr channels.conf - vdr freeze. In log i see constantly trying to obtain PMT When i patch file SCCAMSlot.cpp in 1.0.5 as i described above - all worked ok.

manio commented 11 years ago

@Yuri666 Can you please mail me a vdr log (with max plugin debug level) when a freeze occur? I can't reproduce this problem - after switching to channel with incorrect tune parameters it's trying to obtaining the PMT constantly, but after switch to proper channel, everythings works correctly.

MegaV0lt commented 11 years ago

I will test the patch today and report. the problem occurs not every time. mostly when zapping araond when searching for new channels...

ckarrie commented 11 years ago

Tested with dvbapi.DeCsaTsBuffSize = 8 dvbapi.LogLevel = 3

Works: http://pastebin.com/d1bA4gyL

Yuri666 commented 11 years ago

Hi! First file - clean 1.0.5, second - patched. With 1.0.4 i have not logs now. I will make it as soon. I think maybe it is dvb driver, but same symptoms i has on both dvb cards - tevii470 and prof7500

02.09.2013, 10:58, "Mariusz Białończyk" notifications@github.com:

@Yuri666 Can you please mail me a vdr log (with max plugin debug level) when a freeze occur? I can't reproduce this problem - after switching to channel with incorrect tune parameters it's trying to obtaining the PMT constantly, but after switch to proper channel, everythings works correctly.

— Reply to this email directly or view it on GitHub.

best regards, Yuri

MegaV0lt commented 11 years ago

i applied the patch from Yuri666 to the actual version. I tested zapping around also not sending and dead channels. for the first test it looks fine now.

manio commented 11 years ago

Ok guys, what if you test the following patch on top of master branch: http://pastebin.com/raw.php?i=SQ5y2tdt I know that it would disable oscam reconnecting, but maybe this is the case here...

MegaV0lt commented 11 years ago

Not working. VDR becomes unresponsible and i have to wait for the watchdog to kill vdr ;( Log: https://dl.dropboxusercontent.com/u/1490505/VDR/dvbapi/segfault.txt

Logpack with core.out : https://dl.dropboxusercontent.com/u/1490505/VDR/dvbapi/g2v_log_09030912.tar.xz

Gives a segfault. After VDR restart no tuners are available. Must resart System!

Yuri666 commented 11 years ago

I have a similar. does not work

manio commented 11 years ago

Ok guys, I think I know what was wrong. Obtaining PMT on channels with tune problems leads to timeout when obtaining PMT via demux, and this in turn leads to CAM reset (not respond in expected time). The vdr was constantly reseting the CAM and sending LIST_ONLY command after reset. The vdr sometimes freezes or crashes. For now I am reverting the commit which introduced and exposed this bug. I was testing zapping after such 'wrong' channels and all was fine.

Thank you for your help! :)