[mythtv] Seg Fault in backend with dvb-alpha-0.4pre and use_ts=1

Steve Brown sbrown at cortland.com
Mon Sep 1 20:07:14 EDT 2003


I'm using a recent (2 da or so) CVS of mythtv and the above dvb patches.

All works fine using use_ts=0 w/ my Nova budget card and recent cvs dvb 
driver.

I had to make the following patch to dvbrecorder because calls to set 
DMX_DONT_FILTER after the first fail with "Failed to set filter for last 
pid"

@@ -208,14 +210,17 @@
{
    CloseFilters();

-    printf("Setting filters: ");
-    OpenFilters(pids.audio,       DMX_PES_AUDIO);
-    OpenFilters(pids.video,       DMX_PES_VIDEO);
-    OpenFilters(pids.teletext,    DMX_PES_TELETEXT);
-    OpenFilters(pids.subtitle,    DMX_PES_SUBTITLE);
-    OpenFilters(pids.pcr,         DMX_PES_PCR);
-    OpenFilters(pids.other,       DMX_PES_OTHER);
-    printf("\n");
+    if (!use_transport_stream) {
+        printf("Setting filters: ");
+        OpenFilters(pids.audio,       DMX_PES_AUDIO);
+        OpenFilters(pids.video,       DMX_PES_VIDEO);
+        OpenFilters(pids.teletext,    DMX_PES_TELETEXT);
+        OpenFilters(pids.subtitle,    DMX_PES_SUBTITLE);
+        OpenFilters(pids.pcr,         DMX_PES_PCR);
+        OpenFilters(pids.other,       DMX_PES_OTHER);
+        printf("\n");
+    } else // only one call needed
+        OpenFilters(pids.audio,       DMX_PES_AUDIO);
}

void DVBRecorder::StartRecording()


With use_ts=1, the backend reads lots of packets, but doesn't seem to 
match any.

If I kill mythtv, the backend seg faults. The backtrace is attached.

I'll continue to see if I can figure out what's going wrong.

Also, I think dvbchannel.cpp has the sense of the inversion backward.

@@ -201,15 +201,16 @@
void DVBChannel::CheckOptions(dvb_tuning_t& t)
{
    if ((t.params.inversion == INVERSION_AUTO)
-        && (info.caps & FE_CAN_INVERSION_AUTO))
+        && !(info.caps & FE_CAN_INVERSION_AUTO))
    {
        printf("Channel option inversion is set to 'auto', but your"\

Kenneth, thanks for your dvb work.

Steve

++++++++++++++++++++++++++++++++++++++++++



-------------- next part --------------
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 196621 (LWP 27046)]
0x08290f2b in ~cCiHandler (this=0x84189b0) at dvbci.cpp:1397
1397          delete sessions[i];
(gdb) thread apply all bt full
 
Thread 15 (Thread 213006 (LWP 27047)):
#0  0x40c7a3f7 in poll () from /lib/libc.so.6
No locals.
#1  0x080e2a61 in DVBSections::ThreadLoop() (this=0x8414858) at dvbsections.cpp:192
        ret = 0
        buffer = "\000°=\000\001Ó\000\000\000\000à\020\000\ná\000\000\024â\000\000\036ã\000\000(ä\000\0002å\000\000<æ\000\000Fç\000\000Pè\000\000Zé\000\000dê\000\000në\000\000xì\000Ø\eh·", '\0' <repeats 3036 times>, "\220\220§@", '\0' <repeats 20 times>, "\034úÿ½\004úÿ½¨\204¼@ ", '\0' <repeats 11 times>, "+\000\000\000+\000\000\000\000\000\000\000xð§@\004úÿ½èùÿ½\034úÿ½ÿÿÿ½\b\000\000\000üÿÿÿ\001\000\000\000\000\000\000\000X\206¼@#\000\000\000F\002 \000èùÿ½+\000\000\000h÷ÿ½ïþûÿ\000\000\000\000\177\003ÿÿ \000ÿÿÿ"...
        head = {table_id = 0 '\0', section_length = 61, table_id_ext = 1, current_next = true, version = 9 '\t', section_number = 0 '\0', section_last = 0 '\0'}
#2  0x080e2a23 in DVBSections::ThreadHelper(void*) (cls=0x8414858) at dvbsections.cpp:178
No locals.
#3  0x40a76c70 in pthread_start_thread_event () from /lib/libpthread.so.0
No symbol table info available.
 
Thread 14 (Thread 196621 (LWP 27046)):
#0  0x08290f2b in ~cCiHandler (this=0x84189b0) at dvbci.cpp:1397
No locals.
#1  0x080e4690 in ~DVBCam (this=0x8414510) at dvbcam.cpp:71
No locals.
#2  0x080d5905 in DVBRecorder::Close() (this=0x8418918) at dvbrecorder.cpp:128
No locals.
#3  0x080d6157 in DVBRecorder::StartRecording() (this=0x8418918) at dvbrecorder.cpp:329
        readsz = 188
        pktbuf = "G\037ÿ\020", 'ÿ' <repeats 184 times>
        polls = {fd = 22, events = 1, revents = 1}
#4  0x080c199a in SpawnEncode(void*) (param=0x8418918) at tv_rec.cpp:37
        nvr = (class RecorderBase *) 0x8418918
#5  0x40a76c70 in pthread_start_thread_event () from /lib/libpthread.so.0
---Type <return> to continue, or q <return> to quit---

No symbol table info available.
 
Thread 13 (Thread 180236 (LWP 27045)):
#0  0x40c4e286 in __libc_nanosleep () from /lib/libc.so.6
No locals.
#1  0x00000000 in ?? ()
No symbol table info available.
 
Thread 12 (Thread 163851 (LWP 27044)):
#0  0x40c4e286 in __libc_nanosleep () from /lib/libc.so.6
No locals.
#1  0x00000000 in ?? ()
No symbol table info available.
 
Thread 11 (Thread 147466 (LWP 27038)):
#0  0x40c4e286 in __libc_nanosleep () from /lib/libc.so.6
No locals.
#1  0x00000000 in ?? ()
No symbol table info available.
 
Thread 10 (Thread 131081 (LWP 27037)):
#0  0x40bc8658 in sigsuspend () from /lib/libc.so.6
No locals.
#1  0x40a78c58 in __pthread_wait_for_restart_signal () from /lib/libpthread.so.0
No symbol table info available.
#2  0x40a74fcb in pthread_cond_wait at GLIBC_2.0 () from /lib/libpthread.so.0
No symbol table info available.
#3  0x408ac762 in QWaitCondition::wait(unsigned long) () from /usr/lib/qt-3.1/lib/libqt-mt.so.3
No symbol table info available.
---Type <return> to continue, or q <return> to quit---
#4  0x08087d12 in ProcessRequestThread::run() (this=0x8411d58) at mainserver.cpp:55
No locals.
#5  0x405f5c78 in QProc::~QProc() () from /usr/lib/qt-3.1/lib/libqt-mt.so.3
No symbol table info available.
#6  0x40a76c70 in pthread_start_thread_event () from /lib/libpthread.so.0
No symbol table info available.
 
Thread 9 (Thread 114696 (LWP 27036)):
#0  0x40bc8658 in sigsuspend () from /lib/libc.so.6
No locals.
#1  0x40a78c58 in __pthread_wait_for_restart_signal () from /lib/libpthread.so.0
No symbol table info available.
#2  0x40a74fcb in pthread_cond_wait at GLIBC_2.0 () from /lib/libpthread.so.0
No symbol table info available.
#3  0x408ac762 in QWaitCondition::wait(unsigned long) () from /usr/lib/qt-3.1/lib/libqt-mt.so.3
No symbol table info available.
#4  0x08087d12 in ProcessRequestThread::run() (this=0x8412208) at mainserver.cpp:55
No locals.
#5  0x405f5c78 in QProc::~QProc() () from /usr/lib/qt-3.1/lib/libqt-mt.so.3
No symbol table info available.
#6  0x40a76c70 in pthread_start_thread_event () from /lib/libpthread.so.0
No symbol table info available.
 
Thread 8 (Thread 98311 (LWP 27035)):
#0  0x40bc8658 in sigsuspend () from /lib/libc.so.6
No locals.
#1  0x40a78c58 in __pthread_wait_for_restart_signal () from /lib/libpthread.so.0
No symbol table info available.
#2  0x40a74fcb in pthread_cond_wait at GLIBC_2.0 () from /lib/libpthread.so.0
---Type <return> to continue, or q <return> to quit---
No symbol table info available.
#3  0x408ac762 in QWaitCondition::wait(unsigned long) () from /usr/lib/qt-3.1/lib/libqt-mt.so.3
No symbol table info available.
#4  0x08087d12 in ProcessRequestThread::run() (this=0x8408630) at mainserver.cpp:55
No locals.
#5  0x405f5c78 in QProc::~QProc() () from /usr/lib/qt-3.1/lib/libqt-mt.so.3
No symbol table info available.
#6  0x40a76c70 in pthread_start_thread_event () from /lib/libpthread.so.0
No symbol table info available.
 
Thread 7 (Thread 81926 (LWP 27034)):
#0  0x40bc8658 in sigsuspend () from /lib/libc.so.6
No locals.
#1  0x40a78c58 in __pthread_wait_for_restart_signal () from /lib/libpthread.so.0
No symbol table info available.
#2  0x40a74fcb in pthread_cond_wait at GLIBC_2.0 () from /lib/libpthread.so.0
No symbol table info available.
#3  0x408ac762 in QWaitCondition::wait(unsigned long) () from /usr/lib/qt-3.1/lib/libqt-mt.so.3
No symbol table info available.
#4  0x08087d12 in ProcessRequestThread::run() (this=0x840d310) at mainserver.cpp:55
No locals.
#5  0x405f5c78 in QProc::~QProc() () from /usr/lib/qt-3.1/lib/libqt-mt.so.3
No symbol table info available.
#6  0x40a76c70 in pthread_start_thread_event () from /lib/libpthread.so.0
No symbol table info available.
 
Thread 6 (Thread 65541 (LWP 27033)):
#0  0x40c4e286 in __libc_nanosleep () from /lib/libc.so.6
No locals.
---Type <return> to continue, or q <return> to quit---

#1  0x00000000 in ?? ()
No symbol table info available.
 
Thread 5 (Thread 49156 (LWP 27032)):
#0  0x40c4e286 in __libc_nanosleep () from /lib/libc.so.6
No locals.
#1  0x00000000 in ?? ()
No symbol table info available.
 
Thread 4 (Thread 32771 (LWP 27031)):
#0  0x40c4e286 in __libc_nanosleep () from /lib/libc.so.6
No locals.
#1  0x00000000 in ?? ()
No symbol table info available.
 
Thread 3 (Thread 16386 (LWP 27030)):
#0  0x40bc8658 in sigsuspend () from /lib/libc.so.6
No locals.
#1  0x40a78c58 in __pthread_wait_for_restart_signal () from /lib/libpthread.so.0
No symbol table info available.
#2  0x40a75902 in pthread_join () from /lib/libpthread.so.0
No symbol table info available.
#3  0x080c676e in TVRec::TeardownRecorder(bool) (this=0x8408858, killFile=true) at tv_rec.cpp:646
        message = {static null = {static null = <same as static member of an already seen type>, d = 0x83e86d0, static shared_null = 0x83e86d0}, d = 0x8409798, static shared_null = 0x83e86d0}
        me = {<QCustomEvent> = {<> = {<No data fields>}, d = 0x0}, message = {static null = {static null = <same as static member of an already seen type>, d = 0x83e86d0, static shared_null = 0x83e86d0},
    d = 0x8409798, static shared_null = 0x83e86d0}, extradata = {static null = {static null = <same as static member of an already seen type>, d = 0x83e86d0, static shared_null = 0x83e86d0}, d = 0x8409158,
    static shared_null = 0x83e86d0}}
        blank_frame_map = {sh = 0x84090e0}
        filelen = 0
---Type <return> to continue, or q <return> to quit---

#4  0x080c4574 in TVRec::HandleStateChange() (this=0x8408858) at tv_rec.cpp:481
        tmpInternalState = kState_None
        changed = true
        startRecorder = false
        closeRecorder = true
        killRecordingFile = true
        statename = {static null = {static null = <same as static member of an already seen type>, d = 0x83e86d0, static shared_null = 0x83e86d0}, d = 0x84135f0, static shared_null = 0x83e86d0}
        origname = {static null = {static null = <same as static member of an already seen type>, d = 0x83e86d0, static shared_null = 0x83e86d0}, d = 0x8409740, static shared_null = 0x83e86d0}
#5  0x080c760a in TVRec::RunTV() (this=0x8408858) at tv_rec.cpp:806
No locals.
#6  0x080c75b7 in TVRec::EventThread(void*) (param=0x8408858) at tv_rec.cpp:790
        thetv = (TVRec *) 0x8408858
#7  0x40a76c70 in pthread_start_thread_event () from /lib/libpthread.so.0
No symbol table info available.
 
Thread 2 (Thread 32769 (LWP 27029)):
#0  0x40c7a3f7 in poll () from /lib/libc.so.6
No locals.
#1  0x40a75e1e in __pthread_manager () from /lib/libpthread.so.0
No symbol table info available.
#2  0x40a76017 in __pthread_manager_event () from /lib/libpthread.so.0
No symbol table info available.
 
Thread 1 (Thread 16384 (LWP 27014)):
#0  0x40c4e286 in __libc_nanosleep () from /lib/libc.so.6
No locals.
#1  0xffffffd8 in ?? ()
No symbol table info available.
#2  0x080cd6f8 in TVRec::StopLiveTV() (this=0x8408858) at tv_rec.cpp:1597
---Type <return> to continue, or q <return> to quit---
No locals.
#3  0x0806dc37 in EncoderLink::StopLiveTV() (this=0x83f65d0) at encoderlink.cpp:408
No locals.
#4  0x0808325b in MainServer::endConnection(QSocket*) (this=0x84119c0, socket=0x8409828) at mainserver.cpp:1921
        enc = (EncoderLink *) 0x83f65d0
        i = {node = 0x840d3b8}
        sock = (struct QSocket *) 0x8409828
        it = {<iterator<std::random_access_iterator_tag,PlaybackSock*,int,PlaybackSock**,PlaybackSock*&>> = {<No data fields>}, _M_current = 0x83ec7cc}
        ft = {<iterator<std::random_access_iterator_tag,FileTransfer*,int,FileTransfer**,FileTransfer*&>> = {<No data fields>}, _M_current = 0x0}
        rt = {<iterator<std::random_access_iterator_tag,QSocket*,int,QSocket**,QSocket*&>> = {<No data fields>}, _M_current = 0x83f96c0}
#5  0x080999fb in MainServer::qt_invoke(int, QUObject*) (this=0x84119c0, _id=5, _o=0xbfffe1c0) at moc_mainserver.cpp:96
No locals.
#6  0x4065f0c9 in QObject::activate_signal(QConnectionList*, QUObject*) () from /usr/lib/qt-3.1/lib/libqt-mt.so.3
No symbol table info available.
#7  0x08099f0c in MythServer::endConnect(QSocket*) (this=0x8411b50, t0=0x8409828) at moc_server.cpp:114
        clist = (struct QConnectionList *) 0x8412480
        o = {{type = 0x835c4a0, payload = {b = 124, c = 124 '|', s = 636, i = 1084621436, l = 1084621436, uc = 124 '|', us = 636, ui = 1084621436, ul = 1084621436, f = 5.18780327, d = -1.9927141690569945,
      byte = "|\002¦@(âÿ¿áE\a\bL\032A\b", bytearray = {data = 0x40a6027c "\f|e", size = 3221217832}, ptr = 0x40a6027c, voidstar = {ptr = 0x40a6027c, owner = 40}, charstar = {ptr = 0x40a6027c "\f|e", owner = 40},
      utf8 = {ptr = 0x40a6027c "\f|e", owner = 40}, local8bit = {ptr = 0x40a6027c "\f|e", owner = 40}, iface = 0x40a6027c, idisp = 0x40a6027c}}, {type = 0x835b054, payload = {b = 40, c = 40 '(', s = -26584,
      i = 138450984, l = 138450984, uc = 40 '(', us = 38952, ui = 138450984, ul = 138450984, f = 5.79567571e-34, d = 3085.9219379602182, byte = "(\230@\bØ\e¨@@kÍ@P\eA\b", bytearray = {data = 0x8409828 "ÈÁ¥@ÀkÍ@",
        size = 1084759000}, ptr = 0x8409828, voidstar = {ptr = 0x8409828, owner = 216}, charstar = {ptr = 0x8409828 "ÈÁ¥@ÀkÍ@", owner = 216}, utf8 = {ptr = 0x8409828 "ÈÁ¥@ÀkÍ@", owner = 216}, local8bit = {
        ptr = 0x8409828 "ÈÁ¥@ÀkÍ@", owner = 216}, iface = 0x8409828, idisp = 0x8409828}}}
#8  0x080956d9 in MythServer::discardClient() (this=0x8411b50) at server.cpp:32
        socket = (struct QSocket *) 0x8409828
#9  0x08099fc1 in MythServer::qt_invoke(int, QUObject*) (this=0x8411b50, _id=3, _o=0xbfffe2c0) at moc_server.cpp:120
No locals.
#10 0x4065f0c9 in QObject::activate_signal(QConnectionList*, QUObject*) () from /usr/lib/qt-3.1/lib/libqt-mt.so.3
No symbol table info available.
#11 0x4065ef6d in QObject::activate_signal(int) () from /usr/lib/qt-3.1/lib/libqt-mt.so.3
---Type <return> to continue, or q <return> to quit---

No symbol table info available.
#12 0x4096bcee in QSocket::connectionClosed() () from /usr/lib/qt-3.1/lib/libqt-mt.so.3
No symbol table info available.
#13 0x4082e7c2 in QSocket::sn_read(bool) () from /usr/lib/qt-3.1/lib/libqt-mt.so.3
No symbol table info available.
#14 0x4096be53 in QSocket::qt_invoke(int, QUObject*) () from /usr/lib/qt-3.1/lib/libqt-mt.so.3
No symbol table info available.
#15 0x4065f0c9 in QObject::activate_signal(QConnectionList*, QUObject*) () from /usr/lib/qt-3.1/lib/libqt-mt.so.3
No symbol table info available.
#16 0x4065f1a5 in QObject::activate_signal(int, int) () from /usr/lib/qt-3.1/lib/libqt-mt.so.3
No symbol table info available.
#17 0x4093f282 in QSocketNotifier::activated(int) () from /usr/lib/qt-3.1/lib/libqt-mt.so.3
No symbol table info available.
#18 0x4067b4b0 in QSocketNotifier::event(QEvent*) () from /usr/lib/qt-3.1/lib/libqt-mt.so.3
No symbol table info available.
#19 0x40600f24 in QApplication::internalNotify(QObject*, QEvent*) () from /usr/lib/qt-3.1/lib/libqt-mt.so.3
No symbol table info available.
#20 0x40600b19 in QApplication::notify(QObject*, QEvent*) () from /usr/lib/qt-3.1/lib/libqt-mt.so.3
No symbol table info available.
#21 0x405dbefa in QEventLoop::activateSocketNotifiers() () from /usr/lib/qt-3.1/lib/libqt-mt.so.3
No symbol table info available.
#22 0x405b98d7 in QEventLoop::processEvents(unsigned) () from /usr/lib/qt-3.1/lib/libqt-mt.so.3
No symbol table info available.
#23 0x40614cf6 in QEventLoop::enterLoop() () from /usr/lib/qt-3.1/lib/libqt-mt.so.3
No symbol table info available.
#24 0x40614b98 in QEventLoop::exec() () from /usr/lib/qt-3.1/lib/libqt-mt.so.3
No symbol table info available.
#25 0x40601151 in QApplication::exec() () from /usr/lib/qt-3.1/lib/libqt-mt.so.3
No symbol table info available.
---Type <return> to continue, or q <return> to quit---
#26 0x080722a9 in main (argc=1, argv=0xbffffaa4) at main.cpp:395
        a = <incomplete type>
        logfile = {static null = {static null = <same as static member of an already seen type>, d = 0x83e86d0, static shared_null = 0x83e86d0}, d = 0x83edc40, static shared_null = 0x83e86d0}
        verboseString = {static null = {static null = <same as static member of an already seen type>, d = 0x83e86d0, static shared_null = 0x83e86d0}, d = 0x83edc80, static shared_null = 0x83e86d0}
        daemonize = false
        printsched = false
        printexpire = false
        logfd = -1
        pidfs = <incomplete type>
        db = (struct QSqlDatabase *) 0x83f0c80
        subthread = (struct QSqlDatabase *) 0x83f0980
        expthread = (struct QSqlDatabase *) 0x83f5488
        transthread = (struct QSqlDatabase *) 0x83f5718
        msdb = (struct QSqlDatabase *) 0x83f6148
        port = 6543
        statusport = 6544
        myip = {static null = {static null = <same as static member of an already seen type>, d = 0x83e86d0, static shared_null = 0x83e86d0}, d = 0x83f7308, static shared_null = 0x83e86d0}
        masterip = {static null = {static null = <same as static member of an already seen type>, d = 0x83e86d0, static shared_null = 0x83e86d0}, d = 0x8408a90, static shared_null = 0x83e86d0}
        ismaster = true
        runsched = true
        expdb = (struct QSqlDatabase *) 0x83f5488
        trandb = (struct QSqlDatabase *) 0x83f5718
        nfsfd = 12
#27 0x40bb58c7 in __libc_start_main () from /lib/libc.so.6
No symbol table info available.
0x08290f2b      1397          delete sessions[i];
(gdb)



More information about the mythtv-dev mailing list