Opened 14 years ago

Closed 12 years ago

#1666 closed defect (fixed)

mythfrontend crashes when editing people search from watch recordings

Reported by: ajlill@… Owned by: gigem
Priority: minor Milestone: 0.21
Component: mythtv Version: 0.19
Severity: medium Keywords:
Cc: Ticket locked: no

Description

When you go to edit schedule from the watch recordings screen on a program that was recorded from a people search, mythfrontend core dumps. It works fine if you do it from the upcoming recordings screen. I'll see about getting a stack trace tonight.

Change History (4)

comment:1 Changed 14 years ago by ajlill@…

Here's the backtrace from the core file:

Core was generated by `/usr/local/bin/mythfrontend -v schedule -l /var/tmp/mythfrontend-20060417'.
Program terminated with signal 11, Segmentation fault.

#0  0xb628407f in memcpy () from /lib/tls/libc.so.6
(gdb) thread apply all bt

Thread 5 (process 7960):
#0  0xb642c295 in pthread_cond_wait@@GLIBC_2.3.2 ()
   from /lib/tls/libpthread.so.0
#1  0xb6a1c539 in QWaitCondition::wait () from /usr/lib/libqt-mt.so.3
#2  0xb6f38987 in MythContext::waitPrivRequest ()
   from /usr/local/lib/libmyth-0.19.so.0
#3  0x08071d19 in ?? ()
#4  0xb6429b63 in start_thread () from /lib/tls/libpthread.so.0
#5  0xb62e218a in clone () from /lib/tls/libc.so.6

Thread 4 (process 7961):
#0  0xb642e6a1 in __read_nocancel () from /lib/tls/libpthread.so.0
#1  0xb61f46fe in lirc_nextcode (code=0xb574ba38) at lirc_client.c:1746
#2  0xb70a1669 in LircClient::Process () from /usr/local/lib/libmyth-0.19.so.0
#3  0xb70195cc in MythScrollDialog::setContentsPos ()
   from /usr/local/lib/libmyth-0.19.so.0
#4  0xb6429b63 in start_thread () from /lib/tls/libpthread.so.0
#5  0xb62e218a in clone () from /lib/tls/libc.so.6

Thread 3 (process 7968):
#0  0xb62dba27 in select () from /lib/tls/libc.so.6
#1  0xb697e883 in QSocketDevice::waitForMore () from /usr/lib/libqt-mt.so.3
#2  0xb32ec82d in SipFsm::CheckRxEvent ()
   from /usr/local/lib/mythtv/plugins/libmythphone.so
#3  0xb32e68a2 in SipThread::CheckNetworkEvents ()
   from /usr/local/lib/mythtv/plugins/libmythphone.so
#4  0xb32e54c6 in SipThread::SipThreadWorker ()
   from /usr/local/lib/mythtv/plugins/libmythphone.so
#5  0xb32e528e in SipThread::run ()
   from /usr/local/lib/mythtv/plugins/libmythphone.so
#6  0xb67164ea in QThreadInstance::start () from /usr/lib/libqt-mt.so.3
#7  0xb6429b63 in start_thread () from /lib/tls/libpthread.so.0
#8  0xb62e218a in clone () from /lib/tls/libc.so.6

Thread 2 (process 7969):
#0  0xb642c295 in pthread_cond_wait@@GLIBC_2.3.2 ()
   from /lib/tls/libpthread.so.0
#1  0xb6a1c539 in QWaitCondition::wait () from /usr/lib/libqt-mt.so.3
#2  0xb331a7dc in vxmlParser::vxmlThreadWorker ()
   from /usr/local/lib/mythtv/plugins/libmythphone.so
#3  0xb331a74e in vxmlParser::vxmlThread ()
   from /usr/local/lib/mythtv/plugins/libmythphone.so
#4  0xb6429b63 in start_thread () from /lib/tls/libpthread.so.0
#5  0xb62e218a in clone () from /lib/tls/libc.so.6

Thread 1 (process 7956):
#0  0xb628407f in memcpy () from /lib/tls/libc.so.6
#1  0xb6a535d8 in QString::setLength () from /usr/lib/libqt-mt.so.3
#2  0xb6a5335e in QString::real_detach () from /usr/lib/libqt-mt.so.3
#3  0xb6a595bf in QString::replace () from /usr/lib/libqt-mt.so.3
#4  0xb7782ac4 in ProgramInfo::ToMap () from /usr/local/lib/libmythtv-0.19.so.0
#5  0xb7902067 in ScheduledRecording::ToMap ()
   from /usr/local/lib/libmythtv-0.19.so.0
#6  0xb78dd490 in RecOptDialog::updateInfo ()
   from /usr/local/lib/libmythtv-0.19.so.0
#7  0xb78dcfdc in RecOptDialog::paintEvent ()
   from /usr/local/lib/libmythtv-0.19.so.0
#8  0xb67b5c5e in QWidget::event () from /usr/lib/libqt-mt.so.3
#9  0xb6722e1f in QApplication::internalNotify () from /usr/lib/libqt-mt.so.3
#10 0xb672241e in QApplication::notify () from /usr/lib/libqt-mt.so.3
#11 0xb66ba266 in QETWidget::translatePaintEvent () from /usr/lib/libqt-mt.so.3
#12 0xb66b59a4 in QApplication::x11ProcessEvent () from /usr/lib/libqt-mt.so.3
#13 0xb66cc254 in QEventLoop::processEvents () from /usr/lib/libqt-mt.so.3
#14 0xb67351d8 in QEventLoop::enterLoop () from /usr/lib/libqt-mt.so.3
#15 0xb67230d1 in QApplication::enter_loop () from /usr/lib/libqt-mt.so.3
#16 0xb70096bd in MythDialog::exec () from /usr/local/lib/libmyth-0.19.so.0
#17 0xb6f56a1a in ConfigurationDialog::exec ()
   from /usr/local/lib/libmyth-0.19.so.0
#18 0x080962c0 in DBStorage::~DBStorage ()
#19 0x08156a16 in QWidget::setWFlags ()
#20 0xb677f71c in QObject::activate_signal () from /usr/lib/libqt-mt.so.3
#21 0xb677f544 in QObject::activate_signal () from /usr/lib/libqt-mt.so.3
#22 0xb6ac57ab in QButton::pressed () from /usr/lib/libqt-mt.so.3
#23 0xb6f45233 in MythPushButton::keyPressEvent ()
   from /usr/local/lib/libmyth-0.19.so.0
#24 0xb67b5b85 in QWidget::event () from /usr/lib/libqt-mt.so.3
#25 0xb6722e1f in QApplication::internalNotify () from /usr/lib/libqt-mt.so.3
#26 0xb6722914 in QApplication::notify () from /usr/lib/libqt-mt.so.3
#27 0xb66b9620 in QETWidget::translateKeyEvent () from /usr/lib/libqt-mt.so.3
#28 0xb66b5302 in QApplication::x11ProcessEvent () from /usr/lib/libqt-mt.so.3
#29 0xb66cc254 in QEventLoop::processEvents () from /usr/lib/libqt-mt.so.3
#30 0xb67351d8 in QEventLoop::enterLoop () from /usr/lib/libqt-mt.so.3
#31 0xb67230d1 in QApplication::enter_loop () from /usr/lib/libqt-mt.so.3
#32 0xb70096bd in MythDialog::exec () from /usr/local/lib/libmyth-0.19.so.0
#33 0x08065adc in ?? ()
#34 0xb6f88ce2 in ThemedMenuPrivate::handleAction ()
   from /usr/local/lib/libmyth-0.19.so.0
#35 0xb6f8711e in ThemedMenuPrivate::keyPressHandler ()
   from /usr/local/lib/libmyth-0.19.so.0
#36 0xb6f8addb in ThemedMenu::keyPressEvent ()
   from /usr/local/lib/libmyth-0.19.so.0
#37 0xb67b5b85 in QWidget::event () from /usr/lib/libqt-mt.so.3
#38 0xb6722e1f in QApplication::internalNotify () from /usr/lib/libqt-mt.so.3
#39 0xb6722914 in QApplication::notify () from /usr/lib/libqt-mt.so.3
#40 0xb66b9620 in QETWidget::translateKeyEvent () from /usr/lib/libqt-mt.so.3
#41 0xb66b5302 in QApplication::x11ProcessEvent () from /usr/lib/libqt-mt.so.3
#42 0xb66cc254 in QEventLoop::processEvents () from /usr/lib/libqt-mt.so.3
#43 0xb67351d8 in QEventLoop::enterLoop () from /usr/lib/libqt-mt.so.3
#44 0xb67230d1 in QApplication::enter_loop () from /usr/lib/libqt-mt.so.3
#45 0xb70096bd in MythDialog::exec () from /usr/local/lib/libmyth-0.19.so.0
#46 0x0806eee1 in ?? ()
#47 0xb621f974 in __libc_start_main () from /lib/tls/libc.so.6
#48 0x08063a61 in ?? ()

comment:2 Changed 13 years ago by danielk

Milestone: unknown
Owner: changed from Isaac Richards to gigem

David, this is probably due to using a single ProgramInfo? in two threads. ProgramInfo::clone() makes a copy which can be used in another thread. The problem is due to QStrings, which use non-threadsafe reference counting, the ProgramInfo::clone() uses QDeepCopy<QString> to make copies that can safely be used in another thread.

PS This report probably pre-dates the QDeepCopy usage in clone(), but you can probably do a check of ProgramInfo? usage in the scheduler much more quickly than I could...

comment:3 Changed 12 years ago by stuartm

Milestone: unknown0.21
Status: newinfoneeded_new

Is this still a problem? As Daniel suggested this may be fixed already, it's also the only report of a bug which seems to be 2 years old. I can check the code to see if the likely cause is still there, but only the original ticket submitter can tell if the crash still occurs with trunk.

comment:4 Changed 12 years ago by danielk

Resolution: fixed
Status: infoneeded_newclosed
Note: See TracTickets for help on using tickets.