Mailing List archive

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

[vdr] Re: tech.diff



On Thu, Jun 20, 2002 at 10:51:19AM +0200, Alessio Sangalli wrote:
> Paul Lacatus wrote:
> 
> however, there is the new patch against vdr 104 - aio1606:
> 
> http://www.manoweb.com/alesan/vdr/tech.aio1606.2.diff.gz
> 
> DVB-C users, please test it! I don't know why there were those 
> segfaults, pls try this patch!

I think there is a very hard problem in the code, because:

I added some dsyslog-calls to the code:

vdr.c, line 469:
        // Channel display:
        if (!EITScanner.Active() && cDvbApi::CurrentChannel() != LastChannel) {
  dsyslog(LOG_INFO, "Info: File:%s,Function:%s,Line:%d",__FILE__,__FUNCTION__,__LINE__);
           if (!Menu)
              Menu = new cDisplayChannel(cDvbApi::CurrentChannel(), LastChannel > 0);
  dsyslog(LOG_INFO, "Info: File:%s,Function:%s,Line:%d",__FILE__,__FUNCTION__,__LINE__);
           if (LastChannel > 0)
              PreviousChannel = LastChannel;
           LastChannel = cDvbApi::CurrentChannel();
           }
        // Timers and Recordings:

menu.c, line 2945:
cDisplayChannel::cDisplayChannel(int Number, bool Switched)
:cOsdBase(true)
{
  group = -1;
  withInfo = !Switched || Setup.ShowInfoOnChSwitch;
  int EpgLines = withInfo ? 5 : 1;
#ifdef TECH
  if (Setup.ShowTech) EpgLines++;
#endif
  lines = 0;
  oldNumber = number = 0;
  cChannel *channel = Channels.GetByNumber(Number);
  Interface->Open(Setup.OSDwidth, Setup.ChannelInfoPos ? EpgLines : -EpgLines);
  dsyslog(LOG_INFO, "Info 1: File:%s,Function:%s,Line:%d",__FILE__,__FUNCTION__,__LINE__);
  if (channel) {
     DisplayChannel(channel);
  dsyslog(LOG_INFO, "Info 2: File:%s,Function:%s,Line:%d",__FILE__,__FUNCTION__,__LINE__);
     DisplayInfo();
     }
  dsyslog(LOG_INFO, "Info 3: File:%s,Function:%s,Line:%d",__FILE__,__FUNCTION__,__LINE__);
  lastTime = time_ms();
}

make clean
make DVD=1 TECH=1
./vdr

log:
Jun 20 17:06:41 melchior vdr[4583]: VDR version 1.0.4 AIO-1606 started
Jun 20 17:06:41 melchior vdr[4583]: loading /video/setup.conf
Jun 20 17:06:41 melchior vdr[4583]: loading /video/channels.conf
Jun 20 17:06:41 melchior vdr[4583]: loading /video/timers.conf
Jun 20 17:06:41 melchior vdr[4583]: loading /video/keys-pc.conf
Jun 20 17:06:41 melchior vdr[4583]: probing /dev/ost/frontend0
Jun 20 17:06:41 melchior vdr[4585]: EIT processing thread started (pid=4585) - master
Jun 20 17:06:41 melchior vdr[4583]: probing /dev/ost/frontend1
Jun 20 17:06:41 melchior vdr[4583]: found 1 video device
Jun 20 17:06:41 melchior vdr[4583]: setting primary DVB to 1
Jun 20 17:06:41 melchior vdr[4583]: reading EPG data from /video/epg.data
Jun 20 17:06:41 melchior vdr[4583]: switching to channel 11
Jun 20 17:06:41 melchior vdr[4583]: SVDRP listening on port 2001
Jun 20 17:06:41 melchior vdr[4583]: Info: File:vdr.c,Function:main,Line:471
Jun 20 17:06:41 melchior vdr[4583]: Info 1: File:menu.c,Function:cDisplayChannel,Line:2958
Jun 20 17:06:41 melchior vdr[4583]: Info 2: File:menu.c,Function:cDisplayChannel,Line:2961
Jun 20 17:06:41 melchior vdr[4583]: Info 3: File:menu.c,Function:cDisplayChannel,Line:2964
Jun 20 17:06:41 melchior vdr[4583]: Info: File:vdr.c,Function:main,Line:474

So here the segfault occurs later than all my dsyslog-calls!

NOW: I only remove the "Info 2" dsyslog-call in menu.c (this one which is between:
DisplayChannel(channel); and DisplayInfo();)

make clean
make DVD=1 TECH=1
./vdr

log:
Jun 20 17:06:41 melchior vdr[4583]: VDR version 1.0.4 AIO-1606 started
Jun 20 17:06:41 melchior vdr[4583]: loading /video/setup.conf
Jun 20 17:06:41 melchior vdr[4583]: loading /video/channels.conf
Jun 20 17:06:41 melchior vdr[4583]: loading /video/timers.conf
Jun 20 17:06:41 melchior vdr[4583]: loading /video/keys-pc.conf
Jun 20 17:06:41 melchior vdr[4583]: probing /dev/ost/frontend0
Jun 20 17:06:41 melchior vdr[4585]: EIT processing thread started (pid=4585) - master
Jun 20 17:06:41 melchior vdr[4583]: probing /dev/ost/frontend1
Jun 20 17:06:41 melchior vdr[4583]: found 1 video device
Jun 20 17:06:41 melchior vdr[4583]: setting primary DVB to 1
Jun 20 17:06:41 melchior vdr[4583]: reading EPG data from /video/epg.data
Jun 20 17:06:41 melchior vdr[4583]: switching to channel 11
Jun 20 17:06:41 melchior vdr[4583]: SVDRP listening on port 2001
Jun 20 17:06:41 melchior vdr[4583]: Info: File:vdr.c,Function:main,Line:471
Jun 20 17:06:41 melchior vdr[4583]: Info 1: File:menu.c,Function:cDisplayChannel,Line:2958

So here the segfault occurs between "Info 1" and "Info 3" dsyslog-call!!!!

THIS IS REPRODUCEABLE!!!!

best regards
Martin Neuditschko




Home | Main Index | Thread Index