[mythtv] Ticket #8979: LiveTV changing channels cause fe crash

Warpme warpme at o2.pl
Fri Oct 8 10:06:16 UTC 2010


  Hi,

#8979 is resolved. Thx for that.
It looks like it was symptom of my other problem: failed LiveTV if 
browsing next program within the same mplex.

Situation:
I have 2xDVB-S2 and paid, legal subscription to sat. I'm using soft-cam.
For having reliable multirecord (scenario when myth records prog1/mplex1 
and I want to watch prog2/mplex1), my soft-cam needs tune every time 
when LiveTV starts (even if it is tuning to already tuned transponder).
Code change is following:

diff -Naur mythtv-0.24-26493-old/mythtv/libs/libmythtv/dvbchannel.cpp 
mythtv-0.24-26493-new/mythtv/libs/libmythtv/dvbchannel.cpp
--- mythtv-0.24-26493-old/mythtv/libs/libmythtv/dvbchannel.cpp    
2010-09-24 19:24:56.000000000 +0200
+++ mythtv-0.24-26493-new/mythtv/libs/libmythtv/dvbchannel.cpp    
2010-09-26 16:55:26.000000000 +0200
@@ -827,11 +827,10 @@

      if (reset || !prev_tuning.IsEqual(tunerType, tuning, 500 * freq_mult))
      {
-        VERBOSE(VB_CHANNEL, LOC + QString("Tune(): Tuning to %1%2")
+        VERBOSE(VB_CHANNEL, LOC + QString("New Tune(): Tuning to %1%2")
                  .arg(intermediate_freq ? intermediate_freq : 
tuning.frequency)
                  .arg(suffix));

-#if DVB_API_VERSION >=5
          if (DTVTunerType::kTunerTypeDVBS2 == tunerType)
          {
              struct dtv_property p_clear;
@@ -880,7 +879,6 @@
              }
          }
          else
-#endif
          {
              struct dvb_frontend_parameters params = 
dtvmultiplex_to_dvbparams(
                  tunerType, tuning, intermediate_freq, can_fec_auto);
@@ -902,6 +900,46 @@
          prev_tuning = tuning;
          first_tune = false;
      }
+    else
+    {
+        VERBOSE(VB_CHANNEL, LOC + QString("ReTune(): Tuning to %1%2")
+                .arg(intermediate_freq ? intermediate_freq : 
tuning.frequency)
+                .arg(suffix));
+
+        if (DTVTunerType::kTunerTypeDVBS2 == tunerType)
+        {
+            struct dtv_properties *cmds = dtvmultiplex_to_dtvproperties(
+                tunerType, tuning, intermediate_freq, can_fec_auto);
+
+            if (!cmds) {
+                VERBOSE(VB_IMPORTANT, LOC_ERR + "Failed to convert "
+                        "DTVMultiplex to DTV_PROPERTY sequence");
+                return false;
+            }
+
+            if (VERBOSE_LEVEL_CHECK(VB_CHANNEL|VB_EXTRA))
+            {
+                for (uint i = 0; i < cmds->num; i++)
+                {
+                    VERBOSE(VB_CHANNEL, QString("prop %1: cmd = %2, 
data %3")
+                            .arg(i).arg(cmds->props[i].cmd)
+                            .arg(cmds->props[i].u.data));
+                }
+            }
+
+            int res = ioctl(fd_frontend, FE_SET_PROPERTY, cmds);
+
+            free(cmds->props);
+            free(cmds);
+
+            if (res < 0)
+            {
+                VERBOSE(VB_IMPORTANT, LOC_ERR + "Tune(): " +
+                        "Setting Frontend retuning parameters failed." 
+ ENO);
+                return false;
+            }
+        }
+    }

      SetSIStandard(tuning.sistandard);




Now what is interesting about failed LiveTV with browsing next program 
within the same mplex:
(assume myth recording prog1/mplex1)

1.it is reliable when I jump from none->liveTv prog2/mplex1 
(prog1/mplex1 is recording in background)
2.it crashes when I change from prog2/mplex1->prog3/mplex1 (prog1/mplex1 
is recording in background)

Above shows me that tuning to already tuned transponder shouldn't be 
root cause (as 1 is really reliable).
Reliability in case 2 is little correlated to tuning aspect - as with 
original myth tuning code reliability is better (failed 1 per 5..10) 
while with mod it is almost every time.

I'm attaching fe/be logs from scenario:
-livetv prog1/mplex1 plays
-change livetv prog1/mplex1->prog2/mplex1

br




On 10/8/10 11:31 AM, MythTV wrote:
> #8979: LiveTV changing channels cause fe crash
> -------------------------------------+--------------------------------------
>   Reporter:  warpme@…                 |           Owner:  markk
>       Type:  defect                   |          Status:  assigned
>   Priority:  minor                    |       Milestone:  unknown
> Component:  MythTV - Video Playback  |         Version:  Trunk Head
>   Severity:  medium                   |      Resolution:
>   Keywords:                           |   Ticket locked:  0
> -------------------------------------+--------------------------------------
>
> Comment (by warpme@…):
>
>   Robert, Mark
>
>   Thx. No more FE crashes. We can close ticket. Unfortunately Mark is right:
>   FE crash is a symptom more general problem with my LiveTV. I'll move to
>   commits mailing-list for details.
>   thx
>

-------------- next part --------------
A non-text attachment was scrubbed...
Name: log.tar.gz
Type: application/gzip
Size: 22420 bytes
Desc: not available
URL: <http://mythtv.org/pipermail/mythtv-dev/attachments/20101008/547beb95/attachment.bin>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: warpme.vcf
Type: text/x-vcard
Size: 89 bytes
Desc: not available
URL: <http://mythtv.org/pipermail/mythtv-dev/attachments/20101008/547beb95/attachment.vcf>


More information about the mythtv-dev mailing list