Hello, when I switch for example to sunshine live 1.5.6 crashes. Plugins loaded are remote, skinenigmang and epgsearch.
Backtrace:
Program received signal SIGSEGV, Segmentation fault. [Switching to Thread 1090525520 (LWP 10056)] 0x0000000000465dfa in cChannel::SetPortalName (this=0x0, PortalName=0x40fff810 "D 2 - 14:30") at channels.c:400 400 if (!isempty(PortalName) && strcmp(portalName, PortalName) != 0) { Current language: auto; currently c++ (gdb) bt #0 0x0000000000465dfa in cChannel::SetPortalName (this=0x0, PortalName=0x40fff810 "D 2 - 14:30") at channels.c:400 #1 0x000000000048d33e in cEIT (this=0x40ffffa0, Schedules=0x79b900, Source=35008, Tid=79 'O', Data=0x410000a0 "Oò\027", OnlyRunningStatus=false) at eit.c:213 #2 0x000000000048d940 in cEitFilter::Process (this=0x7e76d0, Pid=18, Tid=79 'O', Data=0x410000a0 "Oò\027", Length=538) at eit.c:330 #3 0x00000000004e3329 in cSectionHandler::Action (this=0x7f4760) at sections.c:212 #4 0x0000000000505811 in cThread::StartThread (Thread=0x7f4760) at thread.c:244 #5 0x00002ae3b0b92225 in start_thread () from /lib/libpthread.so.0 #6 0x00002ae3b1ccc33d in clone () from /lib/libc.so.6
This is on 64bit Debian/Sid compiled with gcc-4.2.1.
Regards Malte Schröder
On Mon, 23 Jul 2007 16:20:23 +0200 Malte Schröder maltesch@gmx.de wrote:
This prevents vdr from crashing. But I don't understand how channel can be a null-pointer in that code-path. It is only set at the start of the method and then checked if it is a null-pointer. Okay, it is being re-set a few lines before, but that is in the true part of the condition.
--- vdr-1.5.6/eit.c 2007-07-21 16:58:04.000000000 +0200 +++ vdr-1.5.6.prod/eit.c 2007-07-24 12:06:46.000000000 +0200 @@ -209,7 +209,7 @@ LinkChannels->Add(new cLinkChannel(link)); } } - else + else if(channel) channel->SetPortalName(linkName); } } @@ -256,7 +256,7 @@
if (!HasExternalData) pEvent->FixEpgBugs(); - if (LinkChannels) + if (LinkChannels && channel) channel->SetLinkChannels(LinkChannels); Modified = true; }
On 07/24/07 13:09, Malte Schröder wrote:
I believe the actual problem was introduced by myself. I wanted to simplify the original patch to have only a single call to Channels.NewChannel(), and in doing so wrote channel = ... instead of transponder = ...
Please try the attached patch.
Klaus
On Sat, 28 Jul 2007 15:20:13 +0200 Klaus Schmidinger Klaus.Schmidinger@cadsoft.de wrote:
Seems to work (i.e. no crashes), thanks :)