Beiträge von MarkusE

    Hallo,


    Manchmal bekomme ich kein Bild, sondern nur Ton. Das sieht dann (nach svdrpsend plug softhddevice atta) so aus:



    Normalerweise bekomme ich ein Bild. Das sieht dann (nach svdrpsend plug softhddevice atta) so aus:


    ~ Markus

    Hi,


    mal wieder getestet, und heute:


    11 ist EAGAIN, das leuchtet mir noch ein. Also, dieser Fehler passiert gelegentlich, sehr oft geht die Verbindung auch mit

    Zitat

    Feb 13 22:02:23 vdr1 vdr: [149130] SVDRP vdr1 < 127.0.0.1:44500 client connection accepted

    Feb 13 22:02:23 vdr1 vdr: [149130] SVDRP vdr1 > 127.0.0.1:44500 server created

    Feb 13 22:02:23 vdr1 vdr: [149130] SVDRP vdr1 < 127.0.0.1:44500 connection closed

    Feb 13 22:02:23 vdr1 vdr: [149130] SVDRP vdr1 < 127.0.0.1:44500 server destroyed

    durch.


    ~ Markus

    Hi,


    Anbei ein neuer Patch.

    r = 0 bedeutet laut manpage "If no process has the pipe open for writing, read() shall return 0 to indicate end-of-file." . Dies entspricht auch der Beobachtung von Klaus. Also wird bei r = 0 direkt "Close();" aufgerufen, wie ohne den Patch.

    Bei r < 0 wird ein Eintrag ins syslog geschrieben, und nach einem Timeout abgebrochen.

    Funktioniert hier super. Im Syslog steht dann gelegentlich:


    errno = 9 bedeutet EBADF, also "The fildes argument is not a valid file descriptor open for reading." .

    Bleibt die Frage: Warum ist der file descriptor 1202 mal ungültig, und danach auf einmal gültig? Und außerdem: 2 Zeilen vor dem read wird ja mit "file.Ready(false)" überprüft, ob der file descriptor OK ist.


    ~ Markus

    Hallo Klaus,


    Ich sehe durchaus, dass mein Patch verbessert werden sollte.

    Ich habe einfach nur verhindert, dass "Close" aufgerufen wird, obwohl kein Verbindungsfehler vorliegt.

    Bleibt die Frage: wie kann ich zuverlässig prüfen, ob ein Fehler vorliegt?

    Ich habe mal auf https://linux.die.net/man/3/read geschaut:

    Zitat

    Upon successful completion, read() and pread() shall return a non-negative integer indicating the number of bytes actually read. Otherwise,
    the functions shall return -1 and set errno to indicate the error.


    Das würde für Deinen Patch sprechen. Aber darunter steht:


    Zitat

    Errors

    The read() and pread() functions shall fail if:

    EAGAIN
    The O_NONBLOCK flag is set for the file descriptor and the process would be delayed.

    ...


    Die Frage ist, wie kann ich zuverlässig prüfen, ob die Verbindung wirklich nicht mehr da ist? Weil nur in diesem Fall "Close" aufgerufen werden sollte.


    ~ Markus

    Hi,


    Es liegt an osd_status.cpp im live Plugin, Methode "std::string const OsdStatusMonitor::EncodeHtml(const std::string& html)":


    Auf dem rpi ist bei "ä" *i:

    Zitat

    $7 = 195 '\303'

    $8 = 164 '\244'

    Und wird encoded, und dann nicht mehr als ä dargestellt.

    Auf dem Intel ist bei "ä" *i:

    Zitat

    $7 = -61 '\303'

    $8 = -92 '\244

    Und wird nicht encoded (da -61 < 129), und damit korrekt dargestellt.

    Vermutlich der Unterschied zwischen "signed char" und "unsigned char".


    ~Markus

    Hi,





    Aus dem Syslog, beim Start des VDR:

    Code
    Jan 30 16:58:33 rpi4 vdr: [32567] VDR version 2.4.6 started
    Jan 30 16:58:33 rpi4 vdr: [32567] switched to user 'vdr'
    Jan 30 16:58:33 rpi4 vdr: [32567] codeset is 'UTF-8' - known
    Jan 30 16:58:33 rpi4 vdr: [32567] override character table is 'ISO-8859-9' - known
    Jan 30 16:58:33 rpi4 vdr: [32567] found 28 locales in /usr/share/locale

    Und

    Code
    Jan 30 14:39:39 vdr1 vdr: [12399] VDR version 2.4.6 started
    Jan 30 14:39:39 vdr1 vdr: [12399] switched to user 'vdr'
    Jan 30 14:39:39 vdr1 vdr: [12399] codeset is 'UTF-8' - known
    Jan 30 14:39:39 vdr1 vdr: [12399] override character table is 'ISO-8859-9' - known
    Jan 30 14:39:39 vdr1 vdr: [12399] found 28 locales in /usr/share/locale