EPGrecとrecpt1で録画しはじめて1年半になるけれど、今までに何度か録画に失敗したことがある。
最初は、電子番組表の取得とダブったのかと思っていたけれど、どうやら違うことがわかった。
syslogを見ると以下のようなメッセージが表示されている。
kernel: recpt1[7212]: segfault at 0000000000708000 rip 0000003b2227ac44 rsp 0000000042bd6018 error 6
電子番組表の取得では頻繁に同じようなエラーが表示されているが、こっちは原因が違うようだ。
kernel: epgdump[8542]: segfault at 00007fff16868000 rip 000000000040319b rsp 00007fff16861df8 error 4
電子番組表は、再取得されるので無視しても良いのだが、通常の番組は困る。
で、以下のようにdo-record.shを書いて対応している。(以下、抜粋)
if [ ${MODE} == 0 ]; then
$RECORDER --b25 --strip $CHANNEL $DURATION ${OUTPUT} >/dev/null &
else
$RECORDER --b25 --strip --sid $SID $CHANNEL $DURATION ${OUTPUT} >/dev/null &
fi
PID=$! ← recpt1のpidを取得
sleep 8 ← segfaultエラーは必ずrecpt1起動して4秒後に発生しているので余裕をみて8秒待つ
COMM=$(ps -p ${PID} -o comm=)
if [ "${COMM}" != "recpt1" ]; then ← recpt1は起動しているかを確認し、落ちていれば再起動
if [ ${MODE} == 0 ]; then
$RECORDER --b25 --strip $CHANNEL $DURATION ${OUTPUT} >/dev/null &
else
$RECORDER --b25 --strip --sid $SID $CHANNEL $DURATION ${OUTPUT} >/dev/null &
fi
fi
while : ← recpt1が終了するまで、待つ
do
COMM=$(ps -p ${PID} -o comm=)
if [ "${COMM}" != "recpt1" ]; then
break
fi
sleep 1
done
上記のようにコードを記述してから、何度かsegfaultエラーが発生したが、今のところ録画には成功している。
しかし、ここ2日、「TMCC LOCK ERROR」という新しいエラーがではじめた。
いままでの対応で録画はできているのだけど・・・
0 件のコメント:
コメントを投稿