[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