[mythtv] Segfault when resolving conflicts

Matt Zimmerman mdz at debian.org
Mon Jul 28 23:19:54 EDT 2003


I've seen this several times, and just caught it in the debugger for the
first time.  It's not 100% reproducible; given a situation where it happens,
I had to remove the entry from conflictresolutionsingle a few times in order
to get it to happen again in the debugger.

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 32771 (LWP 4228)]
0x409cf171 in strncpy () from /lib/libc.so.6
[...]
(gdb) bt full
#0  0x409cf171 in strncpy () from /lib/libc.so.6
No symbol table info available.
#1  0x4074bc2e in QString::sprintf () from /usr/lib/libqt-mt.so.3
No symbol table info available.
#2  0x40731ad3 in QTime::toString () from /usr/lib/libqt-mt.so.3
No symbol table info available.
#3  0x080f8ecc in ScheduledRecording::loadByProgram (this=0x40f6b4b0, 
    db=0x843e390, proginfo=0x40f17d78) at scheduledrecording.cpp:384
        sqltitle = {static null = {
    static null = <same as static member of an already seen type>, 
    d = 0x8431550, static shared_null = 0x8431550}, d = 0x40f17f58, 
  static shared_null = 0x8431550}
        chanid = {static null = {
    static null = <same as static member of an already seen type>, 
    d = 0x8431550, static shared_null = 0x8431550}, d = 0x40f17eb0, 
  static shared_null = 0x8431550}
        query = {static null = {
    static null = <same as static member of an already seen type>, 
    d = 0x8431550, static shared_null = 0x8431550}, d = 0x8455008, 
  static shared_null = 0x8431550}
        result = {d = 0x40f69248, _vptr. = 0x40f6c930}
#4  0x080eb888 in ProgramInfo::GetProgramRecordingStatus (this=0x40f17d78, 
    db=0x843e390) at programinfo.cpp:474
---Type <return> to continue, or q <return> to quit---
        this = (ProgramInfo *) 0x40f17d78
        db = (QSqlDatabase *) 0xbf5ff4b0
#5  0x080a1010 in Scheduler::PruneList (this=0x844d5f8) at scheduler.cpp:419
        j = {current = {_M_node = 0x8453668}}
        first = (ProgramInfo *) 0x40f17d78
        i = {current = {_M_node = 0x8467288}}
        deliter = {_M_node = 0x8453528}
        q = {_M_node = 0x84671d8}
        now = {d = {jd = 2452849}, t = {ds = 79887049}}
#6  0x0809d83e in Scheduler::FillRecordLists (this=0x844d5f8, 
    doautoconflicts=true) at scheduler.cpp:202
        foundlist = {sh = 0x40f0d4d8}
        iter = {_M_node = 0x84c5ae8}
        askIter = {node = 0x844d728}
#7  0x080b0fdd in Scheduler::RunScheduler (this=0x844d5f8)
    at scheduler.cpp:1128
        prerollseconds = 0
        secsleft = 11915
        resetIter = false
        nexttv = (EncoderLink *) 0x844d1b8
        nextRecording = (ProgramInfo *) 0x40f78be0
        nextrectime = {d = {jd = 2452850}, t = {ds = 5400000}}
        curtime = {d = {jd = 2452849}, t = {ds = 79886876}}
---Type <return> to continue, or q <return> to quit---
        lastupdate = {d = {jd = 2452849}, t = {ds = 79856886}}
        recIter = {_M_node = 0x84c55f8}
#8  0x080b6242 in Scheduler::SchedulerThread (param=0x844d5f8)
    at scheduler.cpp:1230
        param = (void *) 0xbf5ff4b0
#9  0x408ac048 in pthread_start_thread () from /lib/libpthread.so.0
No symbol table info available.
(gdb) t a all bt

Thread 9 (Thread 114696 (LWP 4233)):
#0  0x40a19c74 in read () from /lib/libc.so.6
#1  0x408b5b50 in __JCR_LIST__ () from /lib/libpthread.so.0
#2  0x40df69dd in vio_read () from /usr/lib/libmysqlclient.so.10
#3  0x40df60f5 in net_real_write () from /usr/lib/libmysqlclient.so.10
#4  0x40df6316 in my_net_read () from /usr/lib/libmysqlclient.so.10
#5  0x40df2357 in net_safe_read () from /usr/lib/libmysqlclient.so.10
#6  0x40df43e9 in mysql_read_query_result () from /usr/lib/libmysqlclient.so.10
#7  0x40df57e2 in mysql_real_query () from /usr/lib/libmysqlclient.so.10
#8  0x40de6852 in QMYSQLResult::reset ()
   from /usr/lib/qt3/plugins-mt/sqldrivers/libqsqlmysql.so
#9  0x406ff34e in QSqlQuery::exec () from /usr/lib/libqt-mt.so.3
#10 0x40700f28 in QSqlDatabase::exec () from /usr/lib/libqt-mt.so.3
#11 0x4008c9c5 in MythContext::GetSetting (this=0x8435d28, key=@0xbebff7dc, 
    defaultval=@0xbebff790) at mythcontext.cpp:400
#12 0x4008ce8f in MythContext::GetNumSetting (this=0x8435d28, key=@0xbebff7dc, 
    defaultval=0) at mythcontext.cpp:420
#13 0x080a89ae in Scheduler::MarkConflictsToRemove (this=0x8461868)
    at scheduler.cpp:706
#14 0x0809d88a in Scheduler::FillRecordLists (this=0x8461868, 
    doautoconflicts=false) at scheduler.cpp:211
#15 0x0806f6b7 in MainServer::HandleGetPendingRecordings (this=0x844da18, 
---Type <return> to continue, or q <return> to quit---
    pbs=0x845f968) at mainserver.cpp:887
#16 0x0805eb1b in MainServer::ProcessRequest (this=0x844da18, 
    listline=@0x8448ab8, tokens=@0x8448abc, pbs=0x845f968)
    at mainserver.cpp:226
#17 0x080918c2 in ProcessRequestThread::run (this=0x8448aa8)
    at mainserver.cpp:61
#18 0x404f2c29 in QPtrQueue<QMemArray<char> >::deleteItem ()
   from /usr/lib/libqt-mt.so.3
#19 0x408ac048 in pthread_start_thread () from /lib/libpthread.so.0

Thread 8 (Thread 98311 (LWP 4232)):
#0  0x40987c92 in sigsuspend () from /lib/libc.so.6
#1  0x408ae6dd in __pthread_wait_for_restart_signal ()
   from /lib/libpthread.so.0
#2  0x408ab149 in pthread_cond_wait () from /lib/libpthread.so.0
#3  0x40725038 in QWaitCondition::wait () from /usr/lib/libqt-mt.so.3
#4  0x080918a4 in ProcessRequestThread::run (this=0x84489c8)
    at mainserver.cpp:57
#5  0x404f2c29 in QPtrQueue<QMemArray<char> >::deleteItem ()
   from /usr/lib/libqt-mt.so.3
#6  0x408ac048 in pthread_start_thread () from /lib/libpthread.so.0

Thread 7 (Thread 81926 (LWP 4231)):
---Type <return> to continue, or q <return> to quit---
#0  0x40987c92 in sigsuspend () from /lib/libc.so.6
#1  0x408ae6dd in __pthread_wait_for_restart_signal ()
   from /lib/libpthread.so.0
#2  0x408ab149 in pthread_cond_wait () from /lib/libpthread.so.0
#3  0x40725038 in QWaitCondition::wait () from /usr/lib/libqt-mt.so.3
#4  0x080918a4 in ProcessRequestThread::run (this=0x844dca8)
    at mainserver.cpp:57
#5  0x404f2c29 in QPtrQueue<QMemArray<char> >::deleteItem ()
   from /usr/lib/libqt-mt.so.3
#6  0x408ac048 in pthread_start_thread () from /lib/libpthread.so.0

Thread 6 (Thread 65541 (LWP 4230)):
#0  0x40987c92 in sigsuspend () from /lib/libc.so.6
#1  0x408ae6dd in __pthread_wait_for_restart_signal ()
   from /lib/libpthread.so.0
#2  0x408ab149 in pthread_cond_wait () from /lib/libpthread.so.0
#3  0x40725038 in QWaitCondition::wait () from /usr/lib/libqt-mt.so.3
#4  0x080918a4 in ProcessRequestThread::run (this=0x844db58)
    at mainserver.cpp:57
#5  0x404f2c29 in QPtrQueue<QMemArray<char> >::deleteItem ()
   from /usr/lib/libqt-mt.so.3
#6  0x408ac048 in pthread_start_thread () from /lib/libpthread.so.0

---Type <return> to continue, or q <return> to quit---
Thread 5 (Thread 49156 (LWP 4229)):
#0  0x40987c92 in sigsuspend () from /lib/libc.so.6
#1  0x408ae6dd in __pthread_wait_for_restart_signal ()
   from /lib/libpthread.so.0
#2  0x408ab149 in pthread_cond_wait () from /lib/libpthread.so.0
#3  0x40725038 in QWaitCondition::wait () from /usr/lib/libqt-mt.so.3
#4  0x080918a4 in ProcessRequestThread::run (this=0x8448698)
    at mainserver.cpp:57
#5  0x404f2c29 in QPtrQueue<QMemArray<char> >::deleteItem ()
   from /usr/lib/libqt-mt.so.3
#6  0x408ac048 in pthread_start_thread () from /lib/libpthread.so.0

Thread 4 (Thread 32771 (LWP 4228)):
#0  0x409cf171 in strncpy () from /lib/libc.so.6
#1  0x4074bc2e in QString::sprintf () from /usr/lib/libqt-mt.so.3
#2  0x40731ad3 in QTime::toString () from /usr/lib/libqt-mt.so.3
#3  0x080f8ecc in ScheduledRecording::loadByProgram (this=0x40f6b4b0, 
    db=0x843e390, proginfo=0x40f17d78) at scheduledrecording.cpp:384
#4  0x080eb888 in ProgramInfo::GetProgramRecordingStatus (this=0x40f17d78, 
    db=0x843e390) at programinfo.cpp:474
#5  0x080a1010 in Scheduler::PruneList (this=0x844d5f8) at scheduler.cpp:419
#6  0x0809d83e in Scheduler::FillRecordLists (this=0x844d5f8, 
    doautoconflicts=true) at scheduler.cpp:202
---Type <return> to continue, or q <return> to quit---
#7  0x080b0fdd in Scheduler::RunScheduler (this=0x844d5f8)
    at scheduler.cpp:1128
#8  0x080b6242 in Scheduler::SchedulerThread (param=0x844d5f8)
    at scheduler.cpp:1230
#9  0x408ac048 in pthread_start_thread () from /lib/libpthread.so.0

Thread 3 (Thread 16386 (LWP 4227)):
#0  0x409fc671 in nanosleep () from /lib/libc.so.6
#1  0x408b092d in nanosleep () from /lib/libpthread.so.0
#2  0x40a202aa in usleep () from /lib/libc.so.6
#3  0x08107b8f in TVRec::RunTV (this=0x844c988) at tv_rec.cpp:829
#4  0x08112ada in TVRec::EventThread (param=0x844c988) at tv_rec.cpp:811
#5  0x408ac048 in pthread_start_thread () from /lib/libpthread.so.0

Thread 2 (Thread 32769 (LWP 4226)):
#0  0x40a1e40c in poll () from /lib/libc.so.6
#1  0x408abd82 in __pthread_manager () from /lib/libpthread.so.0

Thread 1 (Thread 16384 (LWP 4225)):
#0  0x40a1fc5e in select () from /lib/libc.so.6
#1  0x40897474 in QMotifStyle virtual table () from /usr/lib/libqt-mt.so.3
#2  0x404fbbbf in QApplication::enter_loop () from /usr/lib/libqt-mt.so.3
#3  0x404a917b in QApplication::exec () from /usr/lib/libqt-mt.so.3
---Type <return> to continue, or q <return> to quit---
#4  0x0805bf29 in main (argc=7, argv=0xbffffd64) at main.cpp:305
#0  0x409cf171 in strncpy () from /lib/libc.so.6

Here's the proginfo it's working with:

(gdb) print *proginfo
$10 = {title = {static null = {
      static null = <same as static member of an already seen type>, 
      d = 0x8431550, static shared_null = 0x8431550}, d = 0x40f17f58, 
    static shared_null = 0x8431550}, subtitle = {static null = {
      static null = <same as static member of an already seen type>, 
      d = 0x8431550, static shared_null = 0x8431550}, d = 0x40f17ef0, 
    static shared_null = 0x8431550}, description = {static null = {
      static null = <same as static member of an already seen type>, 
      d = 0x8431550, static shared_null = 0x8431550}, d = 0x40f17fc8, 
    static shared_null = 0x8431550}, category = {static null = {
      static null = <same as static member of an already seen type>, 
      d = 0x8431550, static shared_null = 0x8431550}, d = 0x40f17fe0, 
    static shared_null = 0x8431550}, chanid = {static null = {
      static null = <same as static member of an already seen type>, 
      d = 0x8431550, static shared_null = 0x8431550}, d = 0x40f17eb0, 
    static shared_null = 0x8431550}, chanstr = {static null = {
      static null = <same as static member of an already seen type>, 
      d = 0x8431550, static shared_null = 0x8431550}, d = 0x40f17f18, 
    static shared_null = 0x8431550}, chansign = {static null = {
      static null = <same as static member of an already seen type>, 
      d = 0x8431550, static shared_null = 0x8431550}, d = 0x40f17ec8, 
    static shared_null = 0x8431550}, channame = {static null = {
      static null = <same as static member of an already seen type>, 
---Type <return> to continue, or q <return> to quit---
      d = 0x8431550, static shared_null = 0x8431550}, d = 0x40f17a30, 
    static shared_null = 0x8431550}, rank = {static null = {
      static null = <same as static member of an already seen type>, 
      d = 0x8431550, static shared_null = 0x8431550}, d = 0x40f17d28, 
    static shared_null = 0x8431550}, pathname = {static null = {
      static null = <same as static member of an already seen type>, 
      d = 0x8431550, static shared_null = 0x8431550}, d = 0x40f17e10, 
    static shared_null = 0x8431550}, filesize = 0, hostname = {static null = {
      static null = <same as static member of an already seen type>, 
      d = 0x8431550, static shared_null = 0x8431550}, d = 0x40f17e38, 
    static shared_null = 0x8431550}, startts = {d = {jd = 2452850}, t = {
      ds = 82800000}}, endts = {d = {jd = 2452850}, t = {ds = 84600000}}, 
  spread = -1, startCol = -1, conflicting = false, recording = true, 
  duplicate = true, sourceid = 2, inputid = 2, cardid = 1, 
  conflictfixed = 248, schedulerid = {static null = {
      static null = <same as static member of an already seen type>, 
      d = 0x8431550, static shared_null = 0x8431550}, d = 0x40f17058, 
    static shared_null = 0x8431550}, record = 0x40f6b4b0}

I couldn't find anything obviously weird about it.

-- 
 - mdz


More information about the mythtv-dev mailing list