Opened 14 years ago

Closed 14 years ago

Last modified 14 years ago

#577 closed defect (fixed)

"QGVector::insert: Index 0 out of range" errors

Reported by: janne-mythtv@… Owned by: danielk
Priority: minor Milestone: unknown
Component: dvb Version: head
Severity: low Keywords:
Cc: Ticket locked: no

Description

svn versions since at least 3 weeks generate many of these errors (at least 2 per second while active eit-scanning).

I use 3 DVB-cards in Berlin, Germany. The errors are not exclusevily generated by eit-scanning. I get them also in LiveTV with useonairguide=0 for all channels.

But the following four backtraces have event data. Two of them kind of fail and the other two not. Unfortunately I don't see any difference in the Data.

I have a breakpoint on QGVector::insert and continue afterwards. For stepping I'll need QT with debug symbols.


These two generate the error message:

Breakpoint 16, 0xb6b5d176 in QGVector::insert () from /usr/qt/3/lib/libqt-mt.so.3
(gdb) bt full
#0  0xb6b5d176 in QGVector::insert () from /usr/qt/3/lib/libqt-mt.so.3
No symbol table info available.
#1  0xb7c36b0d in QPtrVector<unsigned char>::insert (this=0xae9b4a70, i=0, d=0xae9b518e "Nz") at qptrvector.h:67
No locals.
#2  0xb7c254d2 in SIParser::ParseDVBEIT (this=0x8167a20, head=0xae9b4bc0, buffer=0xae9b4e88 "\003\005!\024\020a\"#Ñ®\a5", size=1139)
    at siparser.cpp:1478
        lang = {static null = {static null = <same as static member of an already seen type>, d = 0x80ea458, 
    static shared_null = 0x80ea458}, d = 0x837d5e0, static shared_null = 0x80ea458}
        prio = 5
        desc_number = 0
        last_desc_number = 0
        bd4D_prio = 5
        bd4D_data = (uint8_t *) 0xae9b5151 "M;deu\031\005Hör mal, wer da hämmert!\035\005Comedyserie, USA 1991/1999\212"
        bd4D_lang = {static null = {static null = <same as static member of an already seen type>, d = 0x80ea458, 
    static shared_null = 0x80ea458}, d = 0x837e0c0, static shared_null = 0x80ea458}
        exEvInfos = {<> = {<No data fields>}, <No data fields>}
        bd4E_prio = -1
        bd4E_lang = {static null = {static null = <same as static member of an already seen type>, d = 0x80ea458, 
    static shared_null = 0x80ea458}, d = 0x80ea458, static shared_null = 0x80ea458}
        last_table_id = 97 'a'
        des_pos = 774
        e = {SourcePID = 0, TransportID = 773, NetworkID = 8468, ServiceID = 16418, EventID = 8773, Stereo = false, HDTV = false, 
  SubTitled = false, ETM_Location = 0, ATSC = false, PartNumber = 0, PartTotal = 0, StartTime = {d = {jd = 2453679}, t = {
      ds = 32700000}}, EndTime = {d = {jd = 2453679}, t = {ds = 34500000}}, OriginalAirDate = {jd = 0}, LanguageCode = {
    static null = {static null = <same as static member of an already seen type>, d = 0x80ea458, static shared_null = 0x80ea458}, 
    d = 0x837d7a8, static shared_null = 0x80ea458}, Event_Name = {static null = {
      static null = <same as static member of an already seen type>, d = 0x80ea458, static shared_null = 0x80ea458}, d = 0x837e0a8, 
    static shared_null = 0x80ea458}, Event_Subtitle = {static null = {static null = <same as static member of an already seen type>, 
      d = 0x80ea458, static shared_null = 0x80ea458}, d = 0x837e078, static shared_null = 0x80ea458}, Description = {static null = {
      static null = <same as static member of an already seen type>, d = 0x80ea458, static shared_null = 0x80ea458}, d = 0x837e090, 
    static shared_null = 0x80ea458}, ContentDescription = {static null = {
      static null = <same as static member of an already seen type>, d = 0x80ea458, static shared_null = 0x80ea458}, d = 0x837db68, 
    static shared_null = 0x80ea458}, Year = {static null = {static null = <same as static member of an already seen type>, 
      d = 0x80ea458, static shared_null = 0x80ea458}, d = 0x837d5c8, static shared_null = 0x80ea458}, CategoryType = {static null = {
      static null = <same as static member of an already seen type>, d = 0x80ea458, static shared_null = 0x80ea458}, d = 0x837a2c0, 
    static shared_null = 0x80ea458}, Actors = {<QValueList<QString>> = {sh = 0x837a6a8}, <No data fields>}, Credits = {
    sh = 0x8261918}}
        last_segment_number = 16 '\020'
        pos = 713
        descriptor_length = 205
#3  0xb7c1efa4 in SIParser::ParseTable (this=0x8167a20, buffer=0xae9b4e80 "`ôx@\"ß\020ø\003\005!\024\020a\"#Ñ®\a5", size=1147, pid=18)
    at siparser.cpp:562
        head = {table_id = 96 '`', section_length = 1144, table_id_ext = 16418, current_next = true, version = 15 '\017', 
  section_number = 16 '\020', section_last = 248 'ø'}
#4  0xb7c3d4ff in DVBSIParser::StartSectionReader (this=0x8167a20) at dvbsiparser.cpp:299
        rsz = 1147
        i = 5
        ret = 5
        buffer = "`ôx@\"ß\020ø\003\005!\024\020a\"#Ñ®\a5\000\0000\000\002«M8deu\026\005Ein Trio zum Anbeißen\035\005Comedyserie, USA 1998/2001\000\000Ný\002deu\000÷\005Berg hat nach wie vor Besuch von seiner Mutter und hofft immer noch, dass sie schon bald einen neuen Mann k"...
        processed = true
#5  0xb7c3acf5 in DVBSIParser::SystemInfoThread (param=0x8167a20) at dvbsiparser.cpp:100
        siparser = (DVBSIParser *) 0x8167a20
#6  0xb64edcd2 in pthread_start_thread () from /lib/libpthread.so.0
No symbol table info available.
#7  0xb64ede42 in pthread_start_thread_event () from /lib/libpthread.so.0
No symbol table info available.
#8  0xb638c4ea in clone () from /lib/libc.so.6
No symbol table info available.
(gdb) c
Continuing.
QGVector::insert: Index 0 out of range
Breakpoint 16, 0xb6b5d176 in QGVector::insert () from /usr/qt/3/lib/libqt-mt.so.3
(gdb) bt full
#0  0xb6b5d176 in QGVector::insert () from /usr/qt/3/lib/libqt-mt.so.3
No symbol table info available.
#1  0xb7c36b0d in QPtrVector<unsigned char>::insert (this=0xae9b4a70, i=0, d=0xae9b554e "N,") at qptrvector.h:67
No locals.
#2  0xb7c254d2 in SIParser::ParseDVBEIT (this=0x8167a20, head=0xae9b4bc0, buffer=0xae9b4e88 "\003\005!\024\030a\"\205Ñ®\t\005", 
    size=2613) at siparser.cpp:1478
        lang = {static null = {static null = <same as static member of an already seen type>, d = 0x80ea458, 
    static shared_null = 0x80ea458}, d = 0xadc7a1f0, static shared_null = 0x80ea458}
        prio = 5
        desc_number = 0
        last_desc_number = 0
        bd4D_prio = 5
        bd4D_data = (uint8_t *) 0xae9b550e "M>deu\026\005Oggy & die Kakerlaken#\005Zeichentrickserie, F/D 1997/1998\212"
        bd4D_lang = {static null = {static null = <same as static member of an already seen type>, d = 0x80ea458, 
    static shared_null = 0x80ea458}, d = 0xade1ee90, static shared_null = 0x80ea458}
        exEvInfos = {<> = {<No data fields>}, <No data fields>}
        bd4E_prio = -1
        bd4E_lang = {static null = {static null = <same as static member of an already seen type>, d = 0x80ea458, 
    static shared_null = 0x80ea458}, d = 0x80ea458, static shared_null = 0x80ea458}
        last_table_id = 97 'a'
        des_pos = 1734
        e = {SourcePID = 0, TransportID = 773, NetworkID = 8468, ServiceID = 16411, EventID = 8916, Stereo = false, HDTV = false, 
  SubTitled = false, ETM_Location = 0, ATSC = false, PartNumber = 0, PartTotal = 0, StartTime = {d = {jd = 2453679}, t = {
      ds = 40800000}}, EndTime = {d = {jd = 2453679}, t = {ds = 41400000}}, OriginalAirDate = {jd = 0}, LanguageCode = {
    static null = {static null = <same as static member of an already seen type>, d = 0x80ea458, static shared_null = 0x80ea458}, 
    d = 0xadc470f0, static shared_null = 0x80ea458}, Event_Name = {static null = {
      static null = <same as static member of an already seen type>, d = 0x80ea458, static shared_null = 0x80ea458}, d = 0xae089e70, 
    static shared_null = 0x80ea458}, Event_Subtitle = {static null = {static null = <same as static member of an already seen type>, 
      d = 0x80ea458, static shared_null = 0x80ea458}, d = 0xadcd3320, static shared_null = 0x80ea458}, Description = {static null = {
      static null = <same as static member of an already seen type>, d = 0x80ea458, static shared_null = 0x80ea458}, d = 0xadc52a40, 
    static shared_null = 0x80ea458}, ContentDescription = {static null = {
      static null = <same as static member of an already seen type>, d = 0x80ea458, static shared_null = 0x80ea458}, d = 0xade06818, 
    static shared_null = 0x80ea458}, Year = {static null = {static null = <same as static member of an already seen type>, 
      d = 0x80ea458, static shared_null = 0x80ea458}, d = 0xadc52a28, static shared_null = 0x80ea458}, CategoryType = {static null = {
      static null = <same as static member of an already seen type>, d = 0x80ea458, static shared_null = 0x80ea458}, d = 0xadccb450, 
    static shared_null = 0x80ea458}, Actors = {<QValueList<QString>> = {sh = 0xadcd3310}, <No data fields>}, Credits = {
    sh = 0xade29bf8}}
        last_segment_number = 24 '\030'
        pos = 1670
        descriptor_length = 130
#3  0xb7c1efa4 in SIParser::ParseTable (this=0x8167a20, buffer=0xae9b4e80 "`ú:@\033ß\030ø\003\005!\024\030a\"\205Ñ®\t\005", 
    size=2621, pid=18) at siparser.cpp:562
        head = {table_id = 96 '`', section_length = 2618, table_id_ext = 16411, current_next = true, version = 15 '\017', 
  section_number = 24 '\030', section_last = 248 'ø'}
#4  0xb7c3d4ff in DVBSIParser::StartSectionReader (this=0x8167a20) at dvbsiparser.cpp:299
        rsz = 2621
        i = 5
        ret = 5
        buffer = "`ú:@\033ß\030ø\003\005!\024\030a\"\205Ñ®\t\005\000\000\020\000\002jMHdeu#\005Käpt'n Nobart und die Piratenbande \005Zeichentrickserie, L/F/D 1997\000\000Ný\002deu\000÷\005Ein Geisterschiff taucht auf. Prima, denken die Piraten. Denn auf solchen Schiffen befindet"...
        processed = true
#5  0xb7c3acf5 in DVBSIParser::SystemInfoThread (param=0x8167a20) at dvbsiparser.cpp:100
        siparser = (DVBSIParser *) 0x8167a20
#6  0xb64edcd2 in pthread_start_thread () from /lib/libpthread.so.0
No symbol table info available.
#7  0xb64ede42 in pthread_start_thread_event () from /lib/libpthread.so.0
No symbol table info available.
#8  0xb638c4ea in clone () from /lib/libc.so.6
No symbol table info available.
(gdb) c
Continuing.
QGVector::insert: Index 0 out of range

but the next two not:

Breakpoint 16, 0xb6b5d176 in QGVector::insert () from /usr/qt/3/lib/libqt-mt.so.3
(gdb) bt full
#0  0xb6b5d176 in QGVector::insert () from /usr/qt/3/lib/libqt-mt.so.3
No symbol table info available.
#1  0xb7c36b0d in QPtrVector<unsigned char>::insert (this=0xae9b4a70, i=0, d=0xae9b5c35 "Ný\002deu") at qptrvector.h:67
No locals.
#2  0xb7c254d2 in SIParser::ParseDVBEIT (this=0x8167a20, head=0xae9b4bc0, buffer=0xae9b4e88 "\003\005!\024!a#JÑ®\022\020", size=4040)
    at siparser.cpp:1478
        lang = {static null = {static null = <same as static member of an already seen type>, d = 0x80ea458, 
    static shared_null = 0x80ea458}, d = 0xae08a168, static shared_null = 0x80ea458}
        prio = 5
        desc_number = 0
        last_desc_number = 2
        bd4D_prio = 5
        bd4D_data = (uint8_t *) 0xae9b5c11 "M\"deu\n\005One Piece\023\005Animeserie, 1999\212"
        bd4D_lang = {static null = {static null = <same as static member of an already seen type>, d = 0x80ea458, 
    static shared_null = 0x80ea458}, d = 0xadcd39e8, static shared_null = 0x80ea458}
        exEvInfos = {<> = {<No data fields>}, <No data fields>}
        bd4E_prio = -1
        bd4E_lang = {static null = {static null = <same as static member of an already seen type>, d = 0x80ea458, 
    static shared_null = 0x80ea458}, d = 0x80ea458, static shared_null = 0x80ea458}
        last_table_id = 97 'a'
        des_pos = 3501
        e = {SourcePID = 0, TransportID = 773, NetworkID = 8468, ServiceID = 16406, EventID = 9162, Stereo = false, HDTV = false, 
  SubTitled = false, ETM_Location = 0, ATSC = false, PartNumber = 0, PartTotal = 0, StartTime = {d = {jd = 2453679}, t = {
      ds = 54600000}}, EndTime = {d = {jd = 2453679}, t = {ds = 56400000}}, OriginalAirDate = {jd = 0}, LanguageCode = {
    static null = {static null = <same as static member of an already seen type>, d = 0x80ea458, static shared_null = 0x80ea458}, 
    d = 0xadc83860, static shared_null = 0x80ea458}, Event_Name = {static null = {
      static null = <same as static member of an already seen type>, d = 0x80ea458, static shared_null = 0x80ea458}, d = 0xade4d4c0, 
    static shared_null = 0x80ea458}, Event_Subtitle = {static null = {static null = <same as static member of an already seen type>, 
      d = 0x80ea458, static shared_null = 0x80ea458}, d = 0xadc36558, static shared_null = 0x80ea458}, Description = {static null = {
      static null = <same as static member of an already seen type>, d = 0x80ea458, static shared_null = 0x80ea458}, d = 0xadccb080, 
    static shared_null = 0x80ea458}, ContentDescription = {static null = {
      static null = <same as static member of an already seen type>, d = 0x80ea458, static shared_null = 0x80ea458}, d = 0xadcd3a10, 
    static shared_null = 0x80ea458}, Year = {static null = {static null = <same as static member of an already seen type>, 
      d = 0x80ea458, static shared_null = 0x80ea458}, d = 0xadcca9b0, static shared_null = 0x80ea458}, CategoryType = {static null = {
      static null = <same as static member of an already seen type>, d = 0x80ea458, static shared_null = 0x80ea458}, d = 0xae089cf8, 
    static shared_null = 0x80ea458}, Actors = {<QValueList<QString>> = {sh = 0xae0c92a8}, <No data fields>}, Credits = {
    sh = 0xadc5cbb8}}
        last_segment_number = 33 '!'
        pos = 3465
        descriptor_length = 571
#3  0xb7c1efa4 in SIParser::ParseTable (this=0x8167a20, buffer=0xae9b4e80 "`ÿÍ@\026ß ø\003\005!\024!a#JÑ®\022\020", size=4048, pid=18)
    at siparser.cpp:562
        head = {table_id = 96 '`', section_length = 4045, table_id_ext = 16406, current_next = true, version = 15 '\017', 
  section_number = 32 ' ', section_last = 248 'ø'}
#4  0xb7c3d4ff in DVBSIParser::StartSectionReader (this=0x8167a20) at dvbsiparser.cpp:299
        rsz = 4048
        i = 5
        ret = 3
        buffer = "`ÿÍ@\026ß ø\003\005!\024!a#JÑ®\022\020\000\000\005\000\002GM'deu\n\005Pokito TV\030\005Kindermagazin, D 2005\000\000Ný\002deu\000÷\005Schule aus - Pokito an! Das dürft ihr auf keinen Fall verpassen, hier erfahrt ihr täglich wichtige Anime Infos, erlebt spann"...
        processed = true
#5  0xb7c3acf5 in DVBSIParser::SystemInfoThread (param=0x8167a20) at dvbsiparser.cpp:100
        siparser = (DVBSIParser *) 0x8167a20
#6  0xb64edcd2 in pthread_start_thread () from /lib/libpthread.so.0
No symbol table info available.
#7  0xb64ede42 in pthread_start_thread_event () from /lib/libpthread.so.0
No symbol table info available.
#8  0xb638c4ea in clone () from /lib/libc.so.6
No symbol table info available.
(gdb) c
Continuing.
Breakpoint 16, 0xb6b5d176 in QGVector::insert () from /usr/qt/3/lib/libqt-mt.so.3
(gdb) bt full
#0  0xb6b5d176 in QGVector::insert () from /usr/qt/3/lib/libqt-mt.so.3
No symbol table info available.
#1  0xb7c36b0d in QPtrVector<unsigned char>::insert (this=0xae9b4a70, i=0, d=0xae9b52e3 "Ný\002deu") at qptrvector.h:67
No locals.
#2  0xb7c254d2 in SIParser::ParseDVBEIT (this=0x8167a20, head=0xae9b4bc0, buffer=0xae9b4e88 "\003\005!\024\030a\"\205Ñ®\t\005", 
    size=2613) at siparser.cpp:1478
        lang = {static null = {static null = <same as static member of an already seen type>, d = 0x80ea458, 
    static shared_null = 0x80ea458}, d = 0xade08f38, static shared_null = 0x80ea458}
        prio = 5
        desc_number = 0
        last_desc_number = 2
        bd4D_prio = 5
        bd4D_data = (uint8_t *) 0xae9b52ba "M'deu\016\005Spielegalaxie\024\005Kindersendung, D \212"
        bd4D_lang = {static null = {static null = <same as static member of an already seen type>, d = 0x80ea458, 
    static shared_null = 0x80ea458}, d = 0xade271f8, static shared_null = 0x80ea458}
        exEvInfos = {<> = {<No data fields>}, <No data fields>}
        bd4E_prio = -1
        bd4E_lang = {static null = {static null = <same as static member of an already seen type>, d = 0x80ea458, 
    static shared_null = 0x80ea458}, d = 0x80ea458, static shared_null = 0x80ea458}
        last_table_id = 97 'a'
        des_pos = 1115
        e = {SourcePID = 0, TransportID = 773, NetworkID = 8468, ServiceID = 16411, EventID = 8877, Stereo = false, HDTV = false, 
  SubTitled = false, ETM_Location = 0, ATSC = false, PartNumber = 0, PartTotal = 0, StartTime = {d = {jd = 2453679}, t = {
      ds = 38700000}}, EndTime = {d = {jd = 2453679}, t = {ds = 40800000}}, OriginalAirDate = {jd = 0}, LanguageCode = {
    static null = {static null = <same as static member of an already seen type>, d = 0x80ea458, static shared_null = 0x80ea458}, 
    d = 0xadccb450, static shared_null = 0x80ea458}, Event_Name = {static null = {
      static null = <same as static member of an already seen type>, d = 0x80ea458, static shared_null = 0x80ea458}, d = 0xae0c8210, 
    static shared_null = 0x80ea458}, Event_Subtitle = {static null = {static null = <same as static member of an already seen type>, 
      d = 0x80ea458, static shared_null = 0x80ea458}, d = 0xadc470f0, static shared_null = 0x80ea458}, Description = {static null = {
      static null = <same as static member of an already seen type>, d = 0x80ea458, static shared_null = 0x80ea458}, d = 0xade06818, 
    static shared_null = 0x80ea458}, ContentDescription = {static null = {
      static null = <same as static member of an already seen type>, d = 0x80ea458, static shared_null = 0x80ea458}, d = 0xadcc8758, 
    static shared_null = 0x80ea458}, Year = {static null = {static null = <same as static member of an already seen type>, 
      d = 0x80ea458, static shared_null = 0x80ea458}, d = 0xadc492c8, static shared_null = 0x80ea458}, CategoryType = {static null = {
      static null = <same as static member of an already seen type>, d = 0x80ea458, static shared_null = 0x80ea458}, d = 0xadcc80e8, 
    static shared_null = 0x80ea458}, Actors = {<QValueList<QString>> = {sh = 0xadc4acc0}, <No data fields>}, Credits = {
    sh = 0xade481e8}}
        last_segment_number = 24 '\030'
        pos = 1074
        descriptor_length = 584
#3  0xb7c1efa4 in SIParser::ParseTable (this=0x8167a20, buffer=0xae9b4e80 "`ú:@\033ß\030ø\003\005!\024\030a\"\205Ñ®\t\005", 
    size=2621, pid=18) at siparser.cpp:562
        head = {table_id = 96 '`', section_length = 2618, table_id_ext = 16411, current_next = true, version = 15 '\017', 
  section_number = 24 '\030', section_last = 248 'ø'}
#4  0xb7c3d4ff in DVBSIParser::StartSectionReader (this=0x8167a20) at dvbsiparser.cpp:299
        rsz = 2621
        i = 5
        ret = 5
        buffer = "`ú:@\033ß\030ø\003\005!\024\030a\"\205Ñ®\t\005\000\000\020\000\002jMHdeu#\005Käpt'n Nobart und die Piratenbande \005Zeichentrickserie, L/F/D 1997\000\000Ný\002deu\000÷\005Ein Geisterschiff taucht auf. Prima, denken die Piraten. Denn auf solchen Schiffen befindet"...
        processed = true
#5  0xb7c3acf5 in DVBSIParser::SystemInfoThread (param=0x8167a20) at dvbsiparser.cpp:100
        siparser = (DVBSIParser *) 0x8167a20
#6  0xb64edcd2 in pthread_start_thread () from /lib/libpthread.so.0
No symbol table info available.
#7  0xb64ede42 in pthread_start_thread_event () from /lib/libpthread.so.0
No symbol table info available.
#8  0xb638c4ea in clone () from /lib/libc.so.6
No symbol table info available.
(gdb) c 
Continuing.
[Switching to Thread 163851 (LWP 16843)]

Attachments (1)

mythtv_QGVector_fix.diff (674 bytes) - added by janne-mythtv@… 14 years ago.

Download all attachments as: .zip

Change History (6)

comment:1 Changed 14 years ago by danielk

Milestone: unknown
Version: head

comment:2 Changed 14 years ago by tomimo@…

The error message "QGVector::insert: Index 0 out of range" in this case comes from the line 1478, because of the previous line (1477):

exEvInfos.resize (last_desc_number);

where the last_desc_number-variable occasionally gets the value of '0' and thefore the following insert() fails. The same used to happen quite often in my previous cable-network. A simple fix is to make sure that we never resize the vector to zero size.

comment:3 Changed 14 years ago by janne-mythtv@…

yes. I was I little bit tired yesterday.

If we assume that it is legal for last_desc_number to become zero the attached patch seems to be correct. It fixes the problem for me.

Changed 14 years ago by janne-mythtv@…

Attachment: mythtv_QGVector_fix.diff added

comment:4 Changed 14 years ago by danielk

Resolution: fixed
Status: newclosed

(In [7719]) Fixes #577 with a general cleanup of the code involved.

comment:5 Changed 14 years ago by danielk

(In [7722]) References #577. This fixes a regression in [7719].

The iso639 language code is at a different offset in the descriptor of the DVB extended event descriptor than in other descriptors.

Note: See TracTickets for help on using tickets.