Index: libs/libmythtv/dvbrecorder.cpp
===================================================================
--- libs/libmythtv/dvbrecorder.cpp	(revision 13282)
+++ libs/libmythtv/dvbrecorder.cpp	(working copy)
@@ -322,9 +322,11 @@
 
         if (atsc && atsc->DesiredMinorChannel())
             atsc->SetDesiredChannel(atsc->DesiredMajorChannel(),
-                                    atsc->DesiredMinorChannel());
+                                    atsc->DesiredMinorChannel(),
+                                    "dvbrecorder.cpp 326");
         else if (data->DesiredProgram() >= 0)
-            data->SetDesiredProgram(data->DesiredProgram());
+            data->SetDesiredProgram(data->DesiredProgram(),
+                                    "dvbrecorder.cpp 329");
     }
 }
 
Index: libs/libmythtv/hdtvrecorder.cpp
===================================================================
--- libs/libmythtv/hdtvrecorder.cpp	(revision 13282)
+++ libs/libmythtv/hdtvrecorder.cpp	(working copy)
@@ -769,7 +769,8 @@
                         .arg(vct->ProgramNumber(i)));
                 // Do a (partial?) reset here if old desired
                 // program is not 0?
-                GetATSCStreamData()->SetDesiredProgram(vct->ProgramNumber(i));
+                GetATSCStreamData()->SetDesiredProgram(
+                    vct->ProgramNumber(i), "hdtvrecorder.cpp 773");
             }
             found = true;
         }
@@ -784,7 +785,8 @@
                 .arg(vct->MajorChannel(0))
                 .arg(vct->MinorChannel(0)));
         VERBOSE(VB_IMPORTANT, vct->toString());
-        GetATSCStreamData()->SetDesiredProgram(vct->ProgramNumber(0));
+        GetATSCStreamData()->SetDesiredProgram(
+            vct->ProgramNumber(0), "hdtvrecorder.cpp 789");
     }
 }
 
Index: libs/libmythtv/hdhrrecorder.cpp
===================================================================
--- libs/libmythtv/hdhrrecorder.cpp	(revision 13282)
+++ libs/libmythtv/hdhrrecorder.cpp	(working copy)
@@ -170,9 +170,11 @@
 
         if (atsc && atsc->DesiredMinorChannel())
             atsc->SetDesiredChannel(atsc->DesiredMajorChannel(),
-                                    atsc->DesiredMinorChannel());
+                                    atsc->DesiredMinorChannel(),
+                                    "hdhrrecorder.cpp 174");
         else if (data->DesiredProgram() >= 0)
-            data->SetDesiredProgram(data->DesiredProgram());
+            data->SetDesiredProgram(data->DesiredProgram(),
+                                    "hdhrrecorder.cpp 177");
     }
 }
 
Index: libs/libmythtv/firewirerecorder.cpp
===================================================================
--- libs/libmythtv/firewirerecorder.cpp	(revision 13282)
+++ libs/libmythtv/firewirerecorder.cpp	(working copy)
@@ -204,7 +204,8 @@
         data->AddMPEGSPListener(this);
 
         if (data->DesiredProgram() >= 0)
-            data->SetDesiredProgram(data->DesiredProgram());
+            data->SetDesiredProgram(
+                data->DesiredProgram(), "firewirerecorder.cpp 208");
     }
 }
 
Index: libs/libmythtv/siscan.cpp
===================================================================
--- libs/libmythtv/siscan.cpp	(revision 13282)
+++ libs/libmythtv/siscan.cpp	(working copy)
@@ -743,7 +743,7 @@
     // If we have a DTV Signal Monitor, perform table scanner reset
     if (GetDTVSignalMonitor() && GetDTVSignalMonitor()->GetScanStreamData())
     {
-        GetDTVSignalMonitor()->GetScanStreamData()->Reset();
+        GetDTVSignalMonitor()->GetScanStreamData()->Reset("siscan.cpp 746");
         GetDTVSignalMonitor()->SetChannel(-1,-1);
     }
 
Index: libs/libmythtv/mpeg/mpegstreamdata.cpp
===================================================================
--- libs/libmythtv/mpeg/mpegstreamdata.cpp	(revision 13282)
+++ libs/libmythtv/mpeg/mpegstreamdata.cpp	(working copy)
@@ -76,7 +76,7 @@
 
 MPEGStreamData::~MPEGStreamData()
 {
-    Reset(-1);
+    Reset(-1, "~MPEGStreamData()");
     SetPATSingleProgram(NULL);
     SetPMTSingleProgram(NULL);
 
@@ -90,8 +90,12 @@
     _mpeg_sp_listeners.clear();
 }
 
-void MPEGStreamData::SetDesiredProgram(int p)
+void MPEGStreamData::SetDesiredProgram(int p, const QString &where)
 {
+    VERBOSE(VB_IMPORTANT,
+            QString("MPEGStreamData::SetDesiredProgram(%1) called from %2")
+            .arg(p).arg(where));
+
     bool reset = true;
     uint pid = 0;
     const ProgramAssociationTable* pat = NULL;
@@ -120,7 +124,7 @@
     ReturnCachedPATTables(pats);
 
     if (reset)
-        Reset(p);
+        Reset(p, QString("MPEGStreamData::SetDesiredProgram(%1)").arg(p));
 }
 
 void MPEGStreamData::SetEITHelper(EITHelper *eit_helper)
@@ -135,8 +139,12 @@
     _eit_rate = rate;
 }
 
-void MPEGStreamData::Reset(int desiredProgram)
+void MPEGStreamData::Reset(int desiredProgram, const QString &where)
 {
+    VERBOSE(VB_IMPORTANT,
+            QString("MPEGStreamData::Reset(%1) called from %2")
+            .arg(desiredProgram).arg(where));
+
     _desired_program = desiredProgram;
     _invalid_pat_seen = false;
 
@@ -500,6 +508,7 @@
 
     if (TableID::PAT == table_id)
     {
+        VERBOSE(VB_IMPORTANT, "PAT seen");
         if (VersionPAT(psip.TableIDExtension()) != version)
             return false;
         return PATSectionSeen(psip.TableIDExtension(), psip.Section());
@@ -510,6 +519,7 @@
 
     if (TableID::PMT == table_id)
     {
+        VERBOSE(VB_IMPORTANT, "PMT seen");
         if (VersionPMT(psip.TableIDExtension()) != version)
             return false;
         return PMTSectionSeen(psip.TableIDExtension(), psip.Section());
Index: libs/libmythtv/mpeg/atscstreamdata.cpp
===================================================================
--- libs/libmythtv/mpeg/atscstreamdata.cpp	(revision 13282)
+++ libs/libmythtv/mpeg/atscstreamdata.cpp	(working copy)
@@ -44,7 +44,7 @@
 
 ATSCStreamData::~ATSCStreamData()
 {
-    Reset(-1,-1);
+    Reset(-1,-1, "~ATSCStreamData");
 
     QMutexLocker locker(&_listener_lock);
     _atsc_main_listeners.clear();
@@ -52,8 +52,13 @@
     _atsc_eit_listeners.clear();
 }
 
-void ATSCStreamData::SetDesiredChannel(int major, int minor)
+void ATSCStreamData::SetDesiredChannel(
+    int major, int minor, const QString &where)
 {
+    VERBOSE(VB_IMPORTANT,
+            QString("ATSCStreamData::SetDesiredChannel(%1,%2) called from %3")
+            .arg(major).arg(minor).arg(where));
+
     bool reset = true;
     const MasterGuideTable *mgt = GetCachedMGT();
     tvct_vec_t tvcts = GetAllCachedTVCTs();
@@ -86,12 +91,18 @@
             if (cvct)
             {
                 ProcessCVCT(cvct->TransportStreamID(), cvct);
-                SetDesiredProgram(cvct->ProgramNumber(chan_idx));
+                SetDesiredProgram(
+                    cvct->ProgramNumber(chan_idx),
+                    QString("ATSCStreamData::SetDesiredChannel(%1,%2) CVCT")
+                    .arg(major).arg(minor));
             }
             else if (tvct)
             {
                 ProcessTVCT(tvct->TransportStreamID(), tvct);
-                SetDesiredProgram(tvct->ProgramNumber(chan_idx));
+                SetDesiredProgram(
+                    tvct->ProgramNumber(chan_idx),
+                    QString("ATSCStreamData::SetDesiredChannel(%1,%2) TVCT")
+                    .arg(major).arg(minor));
             }
             reset = false;
         }
@@ -102,22 +113,38 @@
     ReturnCachedCVCTTables(cvcts);
 
     if (reset)
-        Reset(major, minor);
+    {
+        Reset(major, minor,
+              QString("ATSCStreamData::SetDesiredChannel(%1,%2) Reset")
+              .arg(major).arg(minor));
+    }
 }
 
-void ATSCStreamData::Reset(int desiredProgram)
+/*
+void ATSCStreamData::Reset(int desiredProgram, const QString &where)
 {
-    Reset(-1,-1);
-    MPEGStreamData::Reset(desiredProgram);
+    VERBOSE(VB_IMPORTANT,
+            QString("ATSCStreamData::Reset(int) called from %1").arg(where));
+
+    Reset(-1,-1, "ATSCStreamData::Reset(int)");
+
+    MPEGStreamData::Reset(desiredProgram, "ATSCStreamData::Reset(int)");
     AddListeningPID(ATSC_PSIP_PID);
 }
+*/
 
-void ATSCStreamData::Reset(int major, int minor)
+void ATSCStreamData::Reset(int major, int minor, const QString &where)
 {
+    VERBOSE(VB_IMPORTANT,
+            QString("ATSCStreamData::Reset(%1,%2) called from %3")
+            .arg(major).arg(minor).arg(where));
+
     _desired_major_channel = major;
     _desired_minor_channel = minor;
     
-    MPEGStreamData::Reset(-1);
+    MPEGStreamData::Reset(-1, QString("ATSCStreamData::Reset(%1,%2)")
+                          .arg(major).arg(minor));
+
     _mgt_version = -1;
     _tvct_version.clear();
     _cvct_version.clear();
Index: libs/libmythtv/mpeg/dvbstreamdata.cpp
===================================================================
--- libs/libmythtv/mpeg/dvbstreamdata.cpp	(revision 13282)
+++ libs/libmythtv/mpeg/dvbstreamdata.cpp	(working copy)
@@ -27,7 +27,7 @@
 
 DVBStreamData::~DVBStreamData()
 {
-    Reset(_desired_netid, _desired_tsid, _desired_program);
+    Reset(_desired_netid, _desired_tsid, _desired_program, "~DVBStreamData()");
 
     QMutexLocker locker(&_listener_lock);
     _dvb_main_listeners.clear();
@@ -36,8 +36,13 @@
     _dvb_has_eit.clear();
 }
 
-void DVBStreamData::SetDesiredService(uint netid, uint tsid, int serviceid)
+void DVBStreamData::SetDesiredService(uint netid, uint tsid, int serviceid,
+                                      const QString &where)
 {
+    VERBOSE(VB_IMPORTANT,
+            QString("DVBStreamData::SetDesiredSevice(%1,%2,%3) called from %4")
+            .arg(netid).arg(tsid).arg(serviceid).arg(where));
+
     bool reset = true;
 
     if (HasCachedAllSDT(tsid, true))
@@ -58,12 +63,19 @@
                 ProcessSDT(_desired_tsid, sdt);
                 ReturnCachedTable(sdt);
             }
-            SetDesiredProgram(serviceid);
+            SetDesiredProgram(
+                serviceid,
+                QString("DVBStreamData::SetDesiredSevice(%1,%2,%3)")
+                .arg(netid).arg(tsid).arg(serviceid));
         }
     }
 
     if (reset)
-        Reset(netid, tsid, serviceid);
+    {
+        Reset(netid, tsid, serviceid,
+              QString("DVBStreamData::SetDesiredService(%1,%2,%3)")
+              .arg(netid).arg(tsid).arg(serviceid));
+    }
 }
 
 
@@ -165,10 +177,15 @@
 }
 
 void DVBStreamData::Reset(uint desired_netid, uint desired_tsid,
-                          int desired_serviceid)
+                          int desired_serviceid, const QString &where)
 {
-    MPEGStreamData::Reset(desired_serviceid);
+    VERBOSE(VB_IMPORTANT,
+            QString("DVBStreamData::Reset(%1,%2,%3) called from %4")
+            .arg(desired_netid).arg(desired_tsid)
+            .arg(desired_serviceid).arg(where));
 
+    MPEGStreamData::Reset(desired_serviceid, "DVBStreamData::Reset()");
+
     _desired_netid = desired_netid;
     _desired_tsid  = desired_tsid;
 
Index: libs/libmythtv/mpeg/scanstreamdata.h
===================================================================
--- libs/libmythtv/mpeg/scanstreamdata.h	(revision 13282)
+++ libs/libmythtv/mpeg/scanstreamdata.h	(working copy)
@@ -18,7 +18,7 @@
     bool IsRedundant(uint pid, const PSIPTable&) const;
     bool HandleTables(uint pid, const PSIPTable &psip);
 
-    void Reset(void);
+    void Reset(const QString &where);
 
     bool HasEITPIDChanges(const uint_vec_t& /*in_use_pids*/) const
         { return false; }
Index: libs/libmythtv/mpeg/mpegstreamdata.h
===================================================================
--- libs/libmythtv/mpeg/mpegstreamdata.h	(revision 13282)
+++ libs/libmythtv/mpeg/mpegstreamdata.h	(working copy)
@@ -74,8 +74,16 @@
     virtual ~MPEGStreamData();
 
     void SetCaching(bool cacheTables) { _cache_tables = cacheTables; }
-    virtual void Reset(int desiredProgram);
+    virtual void Reset(const QString &where)
+    {
+        VERBOSE(VB_IMPORTANT,
+                QString("MPEGStreamData::Reset(void) called from %1")
+                .arg(where));
 
+        Reset(-1, "MPEGStreamData::Reset(void)");
+    }
+    virtual void Reset(int desiredProgram, const QString &where);
+
     /// \brief Current Offset from computer time to DVB time in seconds
     double TimeOffset(void) const;
 
@@ -209,7 +217,7 @@
 
   public:
     // Single program stuff, sets
-    void SetDesiredProgram(int p);
+    void SetDesiredProgram(int p, const QString &where);
     inline void SetPATSingleProgram(ProgramAssociationTable*);
     inline void SetPMTSingleProgram(ProgramMapTable*);
     void SetVideoStreamsRequired(uint num)
Index: libs/libmythtv/mpeg/atscstreamdata.h
===================================================================
--- libs/libmythtv/mpeg/atscstreamdata.h	(revision 13282)
+++ libs/libmythtv/mpeg/atscstreamdata.h	(working copy)
@@ -27,11 +27,19 @@
                    bool cacheTables = false);
    ~ATSCStreamData();
 
-    void Reset(void) { Reset(-1, -1); }
-    void Reset(int desiredProgram);
-    void Reset(int desiredMajorChannel, int desiredMinorChannel);
-    void SetDesiredChannel(int major, int minor);
+    void Reset(const QString &where)
+    {
+        VERBOSE(VB_IMPORTANT,
+                QString("ATSCStreamData::Reset(void) called from %1")
+                .arg(where));
 
+        Reset(-1, -1, "ATSCStreamData::Reset(void)");
+    }
+    //void Reset(int desiredProgram, const QString &where);
+    void Reset(int desiredMajorChannel, int desiredMinorChannel,
+               const QString &where);
+    void SetDesiredChannel(int major, int minor, const QString  &where);
+
     // Table processing
     virtual bool HandleTables(uint pid, const PSIPTable &psip);
     virtual bool IsRedundant(uint, const PSIPTable&) const;
Index: libs/libmythtv/mpeg/dvbstreamdata.h
===================================================================
--- libs/libmythtv/mpeg/dvbstreamdata.h	(revision 13282)
+++ libs/libmythtv/mpeg/dvbstreamdata.h	(working copy)
@@ -26,11 +26,20 @@
                   int desired_program, bool cacheTables = false);
     ~DVBStreamData();
 
-    void Reset(void) { Reset(0, 0, -1); }
-    void Reset(uint desired_netid, uint desired_tsid, int desired_sid);
+    void Reset(const QString &where)
+    {
+        VERBOSE(VB_IMPORTANT,
+                QString("DVBStreamData::Reset(void) called from %1")
+                .arg(where));
 
+        Reset(0, 0, -1, "DVBStreamData::Reset(void)");
+    }
+    void Reset(uint desired_netid, uint desired_tsid,
+               int desired_sid, const QString &where);
+
     // DVB table monitoring
-    void SetDesiredService(uint netid, uint tsid, int serviceid);
+    void SetDesiredService(uint netid, uint tsid, int serviceid,
+                           const QString &where);
     uint DesiredNetworkID(void)   const { return _desired_netid; }
     uint DesiredTransportID(void) const { return _desired_tsid;  }
 
Index: libs/libmythtv/mpeg/scanstreamdata.cpp
===================================================================
--- libs/libmythtv/mpeg/scanstreamdata.cpp	(revision 13282)
+++ libs/libmythtv/mpeg/scanstreamdata.cpp	(working copy)
@@ -32,12 +32,15 @@
     return h0 || h1;
 }
 
-void ScanStreamData::Reset(void)
+void ScanStreamData::Reset(const QString &where)
 {
-    MPEGStreamData::Reset(-1);
-    ATSCStreamData::Reset(-1,-1);
-    DVBStreamData::Reset(0,0,-1);
+    VERBOSE(VB_IMPORTANT,
+            QString("ScanStreamData::Reset(void) called from %1").arg(where));
 
+    MPEGStreamData::Reset(-1, "ScanStreamData::Reset(void)");
+    ATSCStreamData::Reset(-1,-1, "ScanStreamData::Reset(void)");
+    DVBStreamData::Reset(0,0,-1, "ScanStreamData::Reset(void)");
+
     AddListeningPID(MPEG_PAT_PID);
     AddListeningPID(ATSC_PSIP_PID);
     AddListeningPID(DVB_NIT_PID);
Index: libs/libmythtv/iptvrecorder.cpp
===================================================================
--- libs/libmythtv/iptvrecorder.cpp	(revision 13282)
+++ libs/libmythtv/iptvrecorder.cpp	(working copy)
@@ -75,7 +75,7 @@
         Open();
 
     if (_stream_data)
-        _stream_data->Reset(_stream_data->DesiredProgram());
+        _stream_data->Reset(_stream_data->DesiredProgram(), "iptvrecorder.cpp:78");
 
     DTVRecorder::Unpause();
 
Index: libs/libmythtv/tv_rec.cpp
===================================================================
--- libs/libmythtv/tv_rec.cpp	(revision 13282)
+++ libs/libmythtv/tv_rec.cpp	(working copy)
@@ -1688,7 +1688,8 @@
                 GetDTVRecorder()->SetStreamData(asd);
         }
 
-        asd->Reset(major, minor);
+        asd->Reset("tv_rec.cpp:1691");
+        //asd->Reset(major, minor, "tv_rec.cpp:1691");
         sm->SetStreamData(sd);
         sm->SetChannel(major, minor);
         sd->SetVideoStreamsRequired(neededVideo);
@@ -1730,7 +1731,8 @@
         if (GetDVBChannel())
             sd->SetIgnoreCRC(GetDVBChannel()->HasCRCBug());
 
-        dsd->Reset(netid, tsid, progNum);
+        dsd->Reset("tv_rec.cpp:1734");
+        //dsd->Reset(netid, tsid, progNum);
         sm->SetStreamData(sd);
         sm->SetDVBService(netid, tsid, progNum);
         sd->SetVideoStreamsRequired(neededVideo);
@@ -1768,7 +1770,8 @@
             sd->SetIgnoreCRC(GetDVBChannel()->HasCRCBug());
 #endif // USING_DVB
 
-        sd->Reset(progNum);
+        //sd->Reset("tv_rec.cpp:1773");
+        //sd->Reset(progNum, "tv_rec.cpp:1774");
         sm->SetStreamData(sd);
         sm->SetProgramNumber(progNum);
         sd->SetVideoStreamsRequired(neededVideo);
@@ -3411,14 +3414,15 @@
 
             ATSCStreamData *atsc = dynamic_cast<ATSCStreamData*>(mpeg);
             if (atsc)
-                atsc->SetDesiredChannel(request.majorChan, request.minorChan);
+                atsc->SetDesiredChannel(request.majorChan, request.minorChan,
+                                        "tv_rec.cpp 3418");
         }
         else if (request.progNum >= 0)
         {
             channel->SetChannelByString(request.channel);
 
             if (mpeg)
-                mpeg->SetDesiredProgram(request.progNum);
+                mpeg->SetDesiredProgram(request.progNum, "tv_rec.cpp 3425");
         }
     }
 
Index: libs/libmythtv/dtvsignalmonitor.cpp
===================================================================
--- libs/libmythtv/dtvsignalmonitor.cpp	(revision 13282)
+++ libs/libmythtv/dtvsignalmonitor.cpp	(working copy)
@@ -193,7 +193,8 @@
                     kDTVSigMon_CryptSeen | kDTVSigMon_CryptMatch);
         majorChannel = major;
         minorChannel = minor;
-        GetATSCStreamData()->SetDesiredChannel(major, minor);
+        GetATSCStreamData()->SetDesiredChannel(
+            major, minor, "DTVSignalMonitor::SetChannel");
         AddFlags(kDTVSigMon_WaitForVCT | kDTVSigMon_WaitForPAT);
     }
 }
@@ -207,7 +208,8 @@
                     kDTVSigMon_CryptSeen | kDTVSigMon_CryptMatch);
         programNumber = progNum;
         if (GetStreamData())
-            GetStreamData()->SetDesiredProgram(programNumber);
+            GetStreamData()->SetDesiredProgram(
+                programNumber, "DTVSignalMonitor::SetProgramNumber");
         AddFlags(kDTVSigMon_WaitForPMT);
     }
 }
@@ -233,7 +235,8 @@
 
     if (GetDVBStreamData())
     {
-        GetDVBStreamData()->SetDesiredService(netid, tsid, programNumber);
+        GetDVBStreamData()->SetDesiredService(
+            netid, tsid, programNumber, "DTVSignalMonitor::SetDVBService");
         AddFlags(kDTVSigMon_WaitForPMT | kDTVSigMon_WaitForSDT);
         GetDVBStreamData()->AddListeningPID(DVB_SDT_PID);
     }
