[mythtv] DVB Patch 2.0, DVB-S, segfault while tuning

Michael Krax mk-mythtv at krax.net
Tue Nov 16 17:22:30 UTC 2004


Hi everybody,

these days I went through installing mythtv on my machines -- great 
software.  While reading up on the developers mailing list, I discovered 
the DVB Patch by Taylor Jacob et al. and decided to give it a try.

My setup: master backend running on my general server, without a tuner 
card; tuner card in second machine (K6 400) is a Hauppauge Nova S PCI 
(sold here as a special edition in our local hardware 'outlet') with a 
Philips Semiconductors SAA7146; kernel is 2.4.27 (debian out of the 
box), the card works well with mythtv 0.16. It was also recognized by 
CVS+DVB-Patch-2.0.  (To watch, I use a third machine -- this is my test 
setup.)

Result: mythbackend starts, tries to tune to startchan, which is done 
successfully.  If I start to watch TV on the third machine (only on this 
machine), mythtv segfaults.  This is with mythtv out of cvs (yesterday) 
and DVB-Patch 2.0 (http://www.digitalregime.com/mythdvb/)

Debug: mythbackend crashes in dvbchannel.cpp:TuneTransport (around line 
1270, see diff attached), because siparser is NULL (which is set to NULL 
in DVBChannel::CloseDVB, called after the initial tuning).  I added the 
lines as in the attached patch, and now it works.  Perhaps those should 
be put in a specific method.

I'm puzzled 'cause the debug line I inserted never appears.  -- I hope 
it's not complete bs I'm telling you (or perhaps it is called only one 
time, and I overlooked it?).

Other problem, which I didn't investigate further on:  full scanning 
works, but does not find all channels (perhaps I aborted too early?) 
Being in Germany, my setup is the general Astra 19E setup. I can provide 
some of the frequencies which were apparently not searched ... but 
manually adding those by scanning a specific transporter worked.

'Cause this is my first posting to the mailing list: a big thank you to 
all of you who contributed to make mythtv what it is ...

Michael



BTW : To gather epg data, I run a backgrounded process combination of 
tv_grab_dvb and mythfilldatabase, which works just fine (till 
mythtv+DVB-Patch can do this...)

-------------- next part --------------
--- dvbchannel.cpp~	2004-11-15 17:43:27.000000000 +0100
+++ dvbchannel.cpp	2004-11-16 10:10:49.000000000 +0100
@@ -1266,6 +1266,13 @@
             }
 
             // Reset the SIParser class, and request the new Program Map 
+	    if (!siparser) {
+	      /* in DVB channel close siparser is deleted */
+	      siparser = new DVBSIParser(cardnum);
+	      pthread_create(&sectionreader_thread, NULL, SpawnSectionReader, siparser);
+	      pthread_create(&siparser_thread, NULL, SpawnSIParser, siparser);
+	      CHANNEL("DVB SI Parser created (mk)");
+	    }
             siparser->Reset();
             if (channel.sistandard == "ATSC")
                siparser->SetSIStandard(SI_STANDARD_ATSC);


More information about the mythtv-dev mailing list