Index: libs/libmythtv/remoteutil.cpp
===================================================================
--- libs/libmythtv/remoteutil.cpp	(revision 11516)
+++ libs/libmythtv/remoteutil.cpp	(working copy)
@@ -181,10 +181,17 @@
     RemoteGetRecordingList(&expiringlist, strList);
 }
 
-int RemoteGetRecordingList(vector<ProgramInfo *> *reclist, QStringList &strList)
+int RemoteGetRecordingList(vector<ProgramInfo *> *reclist,
+                           QStringList &strList)
 {
+    VERBOSE(VB_IMPORTANT, "RemoteGetRecordingList(..."
+            <<strList[0]<<") -- begin");
     if (!gContext->SendReceiveStringList(strList))
+    {
+        VERBOSE(VB_IMPORTANT, "RemoteGetRecordingList(..."
+                <<strList[0]<<") -- end 0");
         return 0;
+    }
 
     int numrecordings = strList[0].toInt();
 
@@ -205,6 +212,9 @@
         }
     }
 
+    VERBOSE(VB_IMPORTANT, "RemoteGetRecordingList(..."
+            <<strList[0]<<") -- end "<<numrecordings);
+
     return numrecordings;
 }
 
Index: programs/mythfrontend/playbackbox.cpp
===================================================================
--- programs/mythfrontend/playbackbox.cpp	(revision 11516)
+++ programs/mythfrontend/playbackbox.cpp	(working copy)
@@ -1431,6 +1431,9 @@
 
 bool PlaybackBox::FillList(bool useCachedData)
 {
+    VERBOSE(VB_IMPORTANT, "FillList("
+            <<(useCachedData?"use":"no")<<" cache) -- begin");
+
     ProgramInfo *p;
 
     // Save some information so we can find our place again.
@@ -1469,6 +1472,7 @@
     // objects with the title lists.
     progLists[""].setAutoDelete(false);
 
+    VERBOSE(VB_IMPORTANT, "FillList() 1");
     fillRecGroupPasswordCache();
 
     ViewTitleSort titleSort = (ViewTitleSort)gContext->GetNumSetting(
@@ -1481,12 +1485,14 @@
 
     bool LiveTVInAllPrograms = gContext->GetNumSetting("LiveTVInAllPrograms",0);
 
+    VERBOSE(VB_IMPORTANT, "FillList() 2");
     if (!useCachedData || !progCache || progCache->empty())
     {
         clearProgramCache();
 
         progCache = RemoteGetRecordedList(allOrder == 0 || type == Delete);
     }
+    VERBOSE(VB_IMPORTANT, "FillList() 3");
 
     if (progCache)
     {
@@ -1606,6 +1612,7 @@
             }
         }
     }
+    VERBOSE(VB_IMPORTANT, "FillList() 4");
 
     if (sortedList.count() == 0)
     {
@@ -1615,6 +1622,7 @@
         titleIndex = 0;
         playList.clear();
 
+        VERBOSE(VB_IMPORTANT, "FillList() -- end A");
         return 0;
     }
 
@@ -1663,6 +1671,8 @@
         }
     }
 
+    VERBOSE(VB_IMPORTANT, "FillList() 5");
+
     if (progLists[watchGroup].count() > 1)
     {
         QDateTime now = QDateTime::currentDateTime();
@@ -1823,6 +1833,7 @@
         }
         progLists[watchGroup].Sort(comp_recpriority2);
     }
+    VERBOSE(VB_IMPORTANT, "FillList() 6");
 
     // Try to find our old place in the title list.  Scan the new
     // titles backwards until we find where we were or go past.  This
@@ -1851,6 +1862,7 @@
             break;
     }
 
+    VERBOSE(VB_IMPORTANT, "FillList() 7");
     // Now do pretty much the same thing for the individual shows on
     // the specific program list if needed.
     if (oldtitle != titleList[titleIndex] || oldchanid.isNull())
@@ -1927,6 +1939,7 @@
         }
     }
 
+    VERBOSE(VB_IMPORTANT, "FillList() -- end B");
     return (progCache != NULL);
 }
 
Index: programs/mythbackend/mainserver.cpp
===================================================================
--- programs/mythbackend/mainserver.cpp	(revision 11516)
+++ programs/mythbackend/mainserver.cpp	(working copy)
@@ -8,6 +8,7 @@
 #include <qwaitcondition.h>
 #include <qregexp.h>
 
+#include <sys/time.h>
 #include <cstdlib>
 #include <cerrno>
 #include <math.h>
@@ -1004,6 +1005,7 @@
 
 void MainServer::HandleQueryRecordings(QString type, PlaybackSock *pbs)
 {
+    VERBOSE(VB_IMPORTANT, "HandleQueryRecordings("<<type<<") -- begin");
     MythSocket *pbssock = pbs->getSocket();
     bool islocal = pbs->isLocal();
     QString playbackhost = pbs->getHostname();
@@ -1231,6 +1233,8 @@
                     proginfo->pathname = QString("myth://") + ip + ":" + port
                                          + "/" + basename;
 
+                struct timeval stat_beg, stat_end;
+                gettimeofday(&stat_beg, NULL);
                 if (proginfo->filesize == 0)
                 {
                     struct stat st;
@@ -1243,6 +1247,25 @@
 
                     proginfo->SetFilesize(size);
                 }
+                gettimeofday(&stat_end, NULL);
+
+                double stat_time = (stat_end.tv_sec - stat_beg.tv_sec ) +
+                    (stat_end.tv_usec - stat_beg.tv_usec) / 1000000.0;
+                if (stat_time > 1.0)
+                {
+                    VERBOSE(VB_IMPORTANT, QString(
+                                "stat took %1 seconds on file '%2'"
+                                "\n\t\t\ttitle: '%3' \nsubtitle: '%4' with avail '%5'")
+                            .arg(stat_time)
+                            .arg(proginfo->pathname).arg(proginfo->title)
+                            .arg(proginfo->subtitle).arg(
+                                (proginfo->availableStatus==asAvailable) ?
+                                "available" :
+                                ((proginfo->availableStatus==asPendingDelete) ?
+                                 "deleting" :
+                                 ((proginfo->availableStatus==asFileNotFound) ?
+                                  "file not found" : "unnknown"))));
+                }
             }
             else
             {
