[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