[mythtv-commits] Ticket #13190: ExternalRecorder - error reading STDERR
MythTV
noreply at mythtv.org
Thu Dec 7 05:39:55 UTC 2017
#13190: ExternalRecorder - error reading STDERR
--------------------------------------+--------------------------
Reporter: mrawji@… | Owner:
Type: Bug Report - General | Status: new
Priority: minor | Milestone: needs_triage
Component: MythTV - General | Version: Unspecified
Severity: medium | Keywords:
Ticket locked: 0 |
--------------------------------------+--------------------------
Hi,
I think this might be related to
https://code.mythtv.org/trac/ticket/13181, but I am not sure.
I am running fixes/29 (v29.0-64-g39b2062).
I can't reproduce this at will (or, i don't know how). I've had it happen
once that I've noticed. There a couple of things that are odd:
=== External Recorder did not respond ===
{{{
Dec 5 16:30:00: I TVRecEvent recorders/ExternalStreamHandler.cpp:1109
(ProcessCommand) ExternalRec(/home/xbmc/rec/recorder1/record.sh):
ProcessCommand('HasTuner?') = 'OK:Yes'
Dec 5 16:30:00: W TVRecEvent recorders/ExternalStreamHandler.cpp:1097
(ProcessCommand) ExternalRec(/home/xbmc/rec/recorder1/record.sh): External
Recorder did not respond to 'HasPictureAttributes?'
Dec 5 16:30:00: I TVRecEvent recorders/ExternalStreamHandler.cpp:1109
(ProcessCommand) ExternalRec(/home/xbmc/rec/recorder1/record.sh):
ProcessCommand('HasPictureAttributes?') = 'OK:No'
}}}
Here's it's strange that it reports that the recorder did not respond, but
it responded well within the timeout. I think it might be because the
"Ready" method returns TRUE, but 'read' function returns 0 bytes, but I am
just guessing.
same thing happens here:
{{{
Dec 5 16:30:00: W TVRecEvent recorders/ExternalStreamHandler.cpp:1097
(ProcessCommand) ExternalRec(/home/xbmc/rec/recorder1/record.sh): External
Recorder did not respond to 'FlowControl?'
Dec 5 16:30:00: I TVRecEvent recorders/ExternalStreamHandler.cpp:1109
(ProcessCommand) ExternalRec(/home/xbmc/rec/recorder1/record.sh):
ProcessCommand('FlowControl?') = 'OK:XON/XOFF'
}}}
However, it looks like it collected the right information:
{{{
Dec 5 16:30:00: I TVRecEvent recorders/ExternalStreamHandler.cpp:824
(OpenApp) ExternalRec(/home/xbmc/rec/recorder1/record.sh): Capabilities:
tuner(yes) Picture attributes(no) Flow control(XON/XOFF)
}}}
If this is just a logging quirk, I am not bothered.
=== Reading the same data twice from the STDIN ===
This segment picks up where the one above ended. The FlowControl seems to
answered correctly, but the XON/XOFF apprears to be re-read as the answer
to BlockSize.
{{{
Dec 5 16:30:00: I TVRecEvent recorders/ExternalStreamHandler.cpp:1109
(ProcessCommand) ExternalRec(/home/xbmc/rec/recorder1/record.sh):
ProcessCommand('FlowControl?') = 'OK:XON/XOFF'
Dec 5 16:30:00: I TVRecEvent recorders/ExternalStreamHandler.cpp:816
(OpenApp) ExternalRec(/home/xbmc/rec/recorder1/record.sh): App opened
successfully
Dec 5 16:30:00: I TVRecEvent recorders/ExternalStreamHandler.cpp:824
(OpenApp) ExternalRec(/home/xbmc/rec/recorder1/record.sh): Capabilities:
tuner(yes) Picture attributes(no) Flow control(XON/XOFF)
Dec 5 16:30:00: I TVRecEvent recorders/ExternalStreamHandler.cpp:1109
(ProcessCommand) ExternalRec(/home/xbmc/rec/recorder1/record.sh):
ProcessCommand('BlockSize:6160384') = 'OK:XON/XOFF'
}}}
After that, all the responses are "off by 1"
Here's the tail of the log, with the clear example:
{{{
ProcessCommand('LockTimeout?') = 'OK'
Dec 5 16:30:02: E TVRecEvent recorders/ExternalSignalMonitor.cpp:206
(GetLockTimeout) ExternSigMon(/home/xbmc/rec/recorder1/record.sh):
GetLockTimeout: invalid response 'OK'
Dec 5 16:30:02: I SignalMonitor recorders/ExternalStreamHandler.cpp:1109
(ProcessCommand) ExternalRec(/home/xbmc/rec/recorder1/record.sh):
ProcessCommand('SignalStrengthPercent?') = 'OK:10000'
}}}
the OK:10000 is the response to "GetLockTimeout"...
=== Logs ===
Here is the relevant part of the log:
{{{
Dec 5 16:30:00: I TVRecEvent recorders/ExternalStreamHandler.cpp:1109
(ProcessCommand) ExternalRec(/home/xbmc/rec/recorder1/record.sh):
ProcessCommand('Version?') = 'OK:1.0'
Dec 5 16:30:00: I TVRecEvent recorders/ExternalStreamHandler.cpp:1109
(ProcessCommand) ExternalRec(/home/xbmc/rec/recorder1/record.sh):
ProcessCommand('HasTuner?') = 'OK:Yes'
Dec 5 16:30:00: W TVRecEvent recorders/ExternalStreamHandler.cpp:1097
(ProcessCommand) ExternalRec(/home/xbmc/rec/recorder1/record.sh): External
Recorder did not respond to 'HasPictureAttributes?'
Dec 5 16:30:00: I TVRecEvent recorders/ExternalStreamHandler.cpp:1109
(ProcessCommand) ExternalRec(/home/xbmc/rec/recorder1/record.sh):
ProcessCommand('HasPictureAttributes?') = 'OK:No'
Dec 5 16:30:00: W TVRecEvent recorders/ExternalStreamHandler.cpp:1097
(ProcessCommand) ExternalRec(/home/xbmc/rec/recorder1/record.sh): External
Recorder did not respond to 'FlowControl?'
Dec 5 16:30:00: I TVRecEvent recorders/ExternalStreamHandler.cpp:1109
(ProcessCommand) ExternalRec(/home/xbmc/rec/recorder1/record.sh):
ProcessCommand('FlowControl?') = 'OK:XON/XOFF'
Dec 5 16:30:00: I TVRecEvent recorders/ExternalStreamHandler.cpp:816
(OpenApp) ExternalRec(/home/xbmc/rec/recorder1/record.sh): App opened
successfully
Dec 5 16:30:00: I TVRecEvent recorders/ExternalStreamHandler.cpp:824
(OpenApp) ExternalRec(/home/xbmc/rec/recorder1/record.sh): Capabilities:
tuner(yes) Picture attributes(no) Flow control(XON/XOFF)
Dec 5 16:30:00: I TVRecEvent recorders/ExternalStreamHandler.cpp:1109
(ProcessCommand) ExternalRec(/home/xbmc/rec/recorder1/record.sh):
ProcessCommand('BlockSize:6160384') = 'OK:XON/XOFF'
Dec 5 16:30:00: I TVRecEvent recorders/ExternalStreamHandler.cpp:478
(Get) ExternSH: Creating new stream handler
/home/xbmc/rec/recorder1/record.sh for /home/xbmc/rec/recorder1/record.sh
Dec 5 16:30:00: I TVRecEvent recorders/ExternalStreamHandler.cpp:1109
(ProcessCommand) ExternalRec(/home/xbmc/rec/recorder1/record.sh):
ProcessCommand('TuneChannel:1') = 'OK'
Dec 5 16:30:00: I TVRecEvent recorders/ExternalChannel.cpp:72 (Tune)
ExternChan[1](/home/xbmc/rec/recorder1/record.sh): Tune(55)
Dec 5 16:30:00: I TVRecEvent recorders/ExternalChannel.cpp:85 (Tune)
ExternChan[1](/home/xbmc/rec/recorder1/record.sh): Tuning to 55
Dec 5 16:30:00: W TVRecEvent recorders/ExternalStreamHandler.cpp:1097
(ProcessCommand) ExternalRec(/home/xbmc/rec/recorder1/record.sh): External
Recorder did not respond to 'TuneChannel:55'
Dec 5 16:30:02: I TVRecEvent recorders/ExternalStreamHandler.cpp:1109
(ProcessCommand) ExternalRec(/home/xbmc/rec/recorder1/record.sh):
ProcessCommand('TuneChannel:55') = 'OK'
Dec 5 16:30:02: I TVRecEvent recorders/ExternalStreamHandler.cpp:1109
(ProcessCommand) ExternalRec(/home/xbmc/rec/recorder1/record.sh):
ProcessCommand('Version?') = 'OK'
ProcessCommand('LockTimeout?') = 'OK'
Dec 5 16:30:02: E TVRecEvent recorders/ExternalSignalMonitor.cpp:206
(GetLockTimeout) ExternSigMon(/home/xbmc/rec/recorder1/record.sh):
GetLockTimeout: invalid response 'OK'
Dec 5 16:30:02: I SignalMonitor recorders/ExternalStreamHandler.cpp:1109
(ProcessCommand) ExternalRec(/home/xbmc/rec/recorder1/record.sh):
ProcessCommand('SignalStrengthPercent?') = 'OK:10000'
}}}
--
Ticket URL: <https://code.mythtv.org/trac/ticket/13190>
MythTV <http://www.mythtv.org>
MythTV Media Center
More information about the mythtv-commits
mailing list