[vdr] vdr 2.1.2 segfaults in libc using vdr --genindex

Klaus Schmidinger Klaus.Schmidinger at tvdr.de
Mon Dec 2 17:59:03 CET 2013


On 02.12.2013 17:55, Klaus Schmidinger wrote:
> On 02.12.2013 13:15, Lou wrote:
>> hi list
>>
>> vdr 2.1.2 segfaults in libc, as soon as I use the terminal syntax (vdr --genindex) to recreate a missing index file. Trying the same thing in a user interface (vdr-sxfe) works as planed.
>>
>> Here's a backtrace of what's happing:
>>
>> /usr/local/src/vdr/vdr-2.1.2/vdr --genindex=/var/lib/video/True_blood/At_last/2013-11-29.00.30.203-0.rec/
>> Speicherzugriffsfehler (Speicherabzug geschrieben)
>> gdb /usr/local/src/vdr/vdr-2.1.2/vdr ./core
>> Reading symbols from /usr/local/src/vdr/vdr-2.1.2/vdr...done.
>> Loaded symbols for /lib/i686/cmov/libc.so.6
>> <<snip>>
>> Core was generated by `/usr/local/src/vdr/vdr-2.1.2/vdr --genindex=/var/lib/video/True_blood/At_l'.
>> Program terminated with signal 11, Segmentation fault.
>> #0  0xb7496df5 in ?? () from /lib/i686/cmov/libc.so.6
>> (gdb) bt
>> #0  0xb7496df5 in ?? () from /lib/i686/cmov/libc.so.6
>> #1  0x0813b644 in strstr (this=0xbfb16560, FileName=0x82600a8 "/var/lib/video/True_blood/At_last/2013-11-29.00.30.203-0.rec") at /usr/include/string.h:335
>> #2  cRecording (this=0xbfb16560, FileName=0x82600a8 "/var/lib/video/True_blood/At_last/2013-11-29.00.30.203-0.rec") at recording.c:814
>> #3  0x0813be54 in GenerateIndex (FileName=0xbfb177ee "/var/lib/video/True_blood/At_last/2013-11-29.00.30.203-0.rec/") at recording.c:2679
>> #4  0x0818c589 in main (argc=2, argv=0xbfb16904) at vdr.c:345
>
> I guess this was caused by the changes to videodir.[ch].
> For a quick fix you could try moving the line
>
>    cVideoDirectory::SetName(VideoDirectory);
>
> into the
>
>            case 'v': VideoDirectory = optarg;
>                      while (optarg && *optarg && optarg[strlen(optarg) - 1] == '/')
>                            optarg[strlen(optarg) - 1] = 0;
>                      cVideoDirectory::SetName(VideoDirectory); // <----- here!
>                      break;
>
> in vdr.c

Oh, and use the option '-v'...
This is just a quick hack - I'll need to give this more thought.

Klaus



More information about the vdr mailing list