Zero length recordings
In the last year or so, my MythTV backend has been crashing regularly whenever a Freeview DVB-T program starts recording. Initially, I thought it was a degrading external antenna, because my system used to be rock solid before. However, after several Google search expeditions over the last few months, I have finally nailed down what the problem was. For the record, the motherboard is a ASUS P4S800D-X, with a P4 2.8GHz HT processor, with two Hauppage Nova-T DVB cards (cx2388), each with 3 encoders, Ubuntu Desktop 11.04, located in the UK. (Hyperthreading is turned off in the BIOS because this upset mythTV many years ago, and I have not turned it on again.)
To the present problem solution - I discovered from Ticket #9261 (http://code.mythtv.org/trac/ticket/9261) that the problem is likely to be in the EIT code, where a mutex lock is failing in some way. The solution, therefore, was to not use the EIT at all, turning it off on both tuner cards, and switching to the xmltv feed from the Radio Times on both cards. I subsequently had only one failed recording after that over a 2 day test period where I increased the number of programmes recorded to about 18 a day. After that failure, I then changed both tuner settings so that the cards are freed up between recordings, and I have not had another failure in the last 4 days with the test load. Perhaps when the card is opened for each recording, there is less chance that the lock is corrupted.
To catch the times that mythTV does crash, I have used the following home grown code successfully for a couple of years now:
#!/bin/bash LOG=/var/log/mythtv/mythbackend_http_monitor.log while [ 1 ] do # date "+%Y-%m-%d %H:%M:%S Cycle" >> $LOG if ps -ef | grep [m]ythbackend >/dev/null; then #backend running. NB brackets prevent grep cmd being counted #check http port wget -q --timeout=10 --tries=1 http://127.0.0.1:6544 -O /dev/null if [[ $? != 0 ]]; then #failed to get http date "+%Y-%m-%d %H:%M:%S Mythbackend 1st http response failure" >> $LOG sleep 5 #check again wget -q --timeout=10 --tries=1 http://127.0.0.1:6544 -O /dev/null if [[ $? != 0 ]]; then #failed to get http date "+%Y-%m-%d %H:%M:%S Mythbackend 2nd http response failure" >> $LOG sleep 5 #check again wget -q --timeout=10 --tries=1 http://127.0.0.1:6544 -O /dev/null if [[ $? != 0 ]]; then #failed to get http date "+%Y-%m-%d %H:%M:%S Mythbackend 3rd http response failure: restart" >> $LOG # Mythbackend has crashed, log and restart date "+%Y-%m-%d %H:%M:%S Restarting mythbackend" >> $LOG sudo service mythtv-backend restart sleep 60 else sleep 30 fi else sleep 30 fi else sleep 30 fi else sleep 30 fi done
Start the script from /etc/rc.local:
# start mythv monitoring, sleep first sleep 120 /usr/local/sbin/m-backend-http-monitor.sh &