satip plugin am EXIP 418 (gelöst)

  • Die fehlenden Patche sind auf der to-do Liste.

  • Dein Fehler mit dem sectionfilter ist recht unspezifisch bis jetzt.

    Kannst du mal testen, welcher errno code überhaupt auftritt?


    Vielleicht versteht man ja dann mehr.

  • Hallo wirbel,


    ich bekomme das plugin aus dem git leider nicht zum laufen.

    ERROR: /vdr/plugins/libvdr-satip.so.2.6.3: undefined symbol: _Z9UpperCaseNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE

    die librepfunc habe ich installiert


    Peter

    VDR1: ASUS N100I-D D4 + IP TV Plugin + Flirc + softhddevice-git VAAPI + vdr-2.6.5 + 3 weitere Plugins + Debian Bookworm via M2 + Kernel 6.1.0


    VDR2: ASUS AT3IONT-I + PCTV USB Stick 461e + Nvidia 340.108 + Flirc + softhddevice-git + vdr-2.6.4 + 8 weitere Plugins + Samsung U70 + Debian Bullseye via SSD + Kernel 6.3.6 + LG 55 Zoll

  • Die Fehlermeldung meint, dass der Linker diese Funktion nicht findet,

    Code
    UpperCase(std::string)

    was zu dieser lib gehört: std::string UpperCase(std::string s). Beim Installieren muss etwas schief gegangen sein.

  • Danke,


    Beim installieren von librepfunc?


    Peter

    VDR1: ASUS N100I-D D4 + IP TV Plugin + Flirc + softhddevice-git VAAPI + vdr-2.6.5 + 3 weitere Plugins + Debian Bookworm via M2 + Kernel 6.1.0


    VDR2: ASUS AT3IONT-I + PCTV USB Stick 461e + Nvidia 340.108 + Flirc + softhddevice-git + vdr-2.6.4 + 8 weitere Plugins + Samsung U70 + Debian Bullseye via SSD + Kernel 6.3.6 + LG 55 Zoll

  • Genau, es liegt an der librepfunc installation auf deinem Rechner.


    So wie es aussieht wird der header "repfunc.h" gefunden (genauer: ein header, der eine Funktion std::string UpperCase(std::string) bietet), der compiler war also fertig.

    Aber der nach dem Compiler aufgerufene Linker ld kann wohl librepfunc.so nicht finden.


    Mehr infos habe ich von dir nicht.

  • Hi wirbel,


    Keine Ahnung was hier schief läuft.

    librepfunc wird durch ldconfig gefunden.

    root@vdr1:~# ldconfig -v | grep librepfunc

    ldconfig: Kann »stat()« für »/usr/local/lib/x86_64-linux-gnu« nicht aufrufen: Datei oder Verzeichnis nicht gefunden

    ldconfig: Pfad »/usr/lib/x86_64-linux-gnu« mehrfach angegeben

    ldconfig: Pfad »/lib/x86_64-linux-gnu« mehrfach angegeben

    ldconfig: Pfad »/usr/lib/x86_64-linux-gnu« mehrfach angegeben

    ldconfig: Pfad »/usr/lib« mehrfach angegeben

    librepfunc.so.1 -> librepfunc.so


    Die kompilierung des Plugin bringt keine Fehler:

    *** Plugin satip:

    CC satip.o

    CC common.o

    CC config.o

    CC device.o

    CC discover.o

    CC msearch.o

    CC param.o

    CC poller.o

    CC rtp.o

    CC rtcp.o

    CC rtsp.o

    CC sectionfilter.o

    CC server.o

    CC setup.o

    CC socket.o

    CC statistics.o

    CC tuner.o

    LD libvdr-satip.so

    GT po/satip.pot

    PO po/ca_ES.po

    MO po/ca_ES.mo

    PO po/de_DE.po

    MO po/de_DE.mo

    PO po/es_ES.po

    MO po/es_ES.mo

    PO po/fi_FI.po

    MO po/fi_FI.mo

    PO po/pl_PL.po

    MO po/pl_PL.mo


    *** Plugin softhddevice:

    make[1]: Für das Ziel „all“ ist nichts zu tun.


    allerding ergibt ldd auf das Plugin keinen Verweis zu der librepfunc.so


    libvdr-satip.so:

    linux-vdso.so.1 (0x00007ffeec783000)

    libcurl.so.4 => /lib/x86_64-linux-gnu/libcurl.so.4 (0x00007fdd7b33d000)

    libpugixml.so.1 => /lib/x86_64-linux-gnu/libpugixml.so.1 (0x00007fdd7b300000)

    libstdc++.so.6 => /lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007fdd7b133000)

    libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fdd7afef000)

    libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fdd7afd5000)

    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fdd7ae01000)

    libnghttp2.so.14 => /lib/x86_64-linux-gnu/libnghttp2.so.14 (0x00007fdd7add2000)

    libidn2.so.0 => /lib/x86_64-linux-gnu/libidn2.so.0 (0x00007fdd7adb1000)

    librtmp.so.1 => /lib/x86_64-linux-gnu/librtmp.so.1 (0x00007fdd7ad92000)

    libssh2.so.1 => /lib/x86_64-linux-gnu/libssh2.so.1 (0x00007fdd7ad5d000)

    libpsl.so.5 => /lib/x86_64-linux-gnu/libpsl.so.5 (0x00007fdd7ad49000)

    libssl.so.1.1 => /lib/x86_64-linux-gnu/libssl.so.1.1 (0x00007fdd7acb6000)

    libcrypto.so.1.1 => /lib/x86_64-linux-gnu/libcrypto.so.1.1 (0x00007fdd7a800000)

    libgssapi_krb5.so.2 => /lib/x86_64-linux-gnu/libgssapi_krb5.so.2 (0x00007fdd7ac61000)

    libldap_r-2.4.so.2 => /lib/x86_64-linux-gnu/libldap_r-2.4.so.2 (0x00007fdd7ac0b000)

    liblber-2.4.so.2 => /lib/x86_64-linux-gnu/liblber-2.4.so.2 (0x00007fdd7abfa000)

    libbrotlidec.so.1 => /lib/x86_64-linux-gnu/libbrotlidec.so.1 (0x00007fdd7abec000)

    libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007fdd7abcf000)

    libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fdd7abab000)

    /lib64/ld-linux-x86-64.so.2 (0x00007fdd7b442000)

    libunistring.so.2 => /lib/x86_64-linux-gnu/libunistring.so.2 (0x00007fdd7a67e000)

    libgnutls.so.30 => /lib/x86_64-linux-gnu/libgnutls.so.30 (0x00007fdd7a400000)

    libhogweed.so.6 => /lib/x86_64-linux-gnu/libhogweed.so.6 (0x00007fdd7ab62000)

    libnettle.so.8 => /lib/x86_64-linux-gnu/libnettle.so.8 (0x00007fdd7ab1a000)

    libgmp.so.10 => /lib/x86_64-linux-gnu/libgmp.so.10 (0x00007fdd7a37f000)

    libgcrypt.so.20 => /lib/x86_64-linux-gnu/libgcrypt.so.20 (0x00007fdd7a25f000)

    libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fdd7ab12000)

    libkrb5.so.3 => /lib/x86_64-linux-gnu/libkrb5.so.3 (0x00007fdd7a185000)

    libk5crypto.so.3 => /lib/x86_64-linux-gnu/libk5crypto.so.3 (0x00007fdd7a64e000)

    libcom_err.so.2 => /lib/x86_64-linux-gnu/libcom_err.so.2 (0x00007fdd7ab0c000)

    libkrb5support.so.0 => /lib/x86_64-linux-gnu/libkrb5support.so.0 (0x00007fdd7aafb000)

    libresolv.so.2 => /lib/x86_64-linux-gnu/libresolv.so.2 (0x00007fdd7a634000)

    libsasl2.so.2 => /lib/x86_64-linux-gnu/libsasl2.so.2 (0x00007fdd7a617000)

    libbrotlicommon.so.1 => /lib/x86_64-linux-gnu/libbrotlicommon.so.1 (0x00007fdd7a162000)

    libp11-kit.so.0 => /lib/x86_64-linux-gnu/libp11-kit.so.0 (0x00007fdd7a02e000)

    libtasn1.so.6 => /lib/x86_64-linux-gnu/libtasn1.so.6 (0x00007fdd7a601000)

    libgpg-error.so.0 => /lib/x86_64-linux-gnu/libgpg-error.so.0 (0x00007fdd7a008000)

    libkeyutils.so.1 => /lib/x86_64-linux-gnu/libkeyutils.so.1 (0x00007fdd7a001000)

    libffi.so.7 => /lib/x86_64-linux-gnu/libffi.so.7 (0x00007fdd79ff5000)


    Ich nutze aktuell das satip plugin von rotafor, habe hier allerdings immer mal das Problem das ein Kanal dunkel bleibt.

    Hatte Hoffnung das es mit deiner Version nicht pasiert.


    Ich setze aber gerade einen neuen VDR auf Intelbasis mit Debian bookworm auf, da teste ich das noch mal


    Peter

    VDR1: ASUS N100I-D D4 + IP TV Plugin + Flirc + softhddevice-git VAAPI + vdr-2.6.5 + 3 weitere Plugins + Debian Bookworm via M2 + Kernel 6.1.0


    VDR2: ASUS AT3IONT-I + PCTV USB Stick 461e + Nvidia 340.108 + Flirc + softhddevice-git + vdr-2.6.4 + 8 weitere Plugins + Samsung U70 + Debian Bullseye via SSD + Kernel 6.3.6 + LG 55 Zoll

  • Hi Peter,


    Ich nutze aktuell das satip plugin von rotafor, habe hier allerdings immer mal das Problem das ein Kanal dunkel bleibt.

    Hatte Hoffnung das es mit deiner Version nicht pasiert.

    ich fürchte, daran wird sich adhoc nichts ändern, bis auf die Tatsache, dass ich dir beim Debuggen helfen würde.


    allerding ergibt ldd auf das Plugin keinen Verweis zu der librepfunc.so

    Das könnte genau das Problem sein, genauer mein Fehler. Ich nutze das Plugin zwar selbst, aber bei mir baut es merkwürdigerweise.


    Könntest du das ganze bitte in einen neuen thread packen oder dafür ein Issue auf github anlegen, damit wir das durchgehen?

    Ich würde ungern hier weiter dazu posten. Wir entführen hier gerade diesen Thread. ;)

  • Dein Fehler mit dem sectionfilter ist recht unspezifisch bis jetzt.

    Kannst du mal testen, welcher errno code überhaupt auftritt?


    Vielleicht versteht man ja dann mehr.

    Hier nun mal das Log

    Code
    [6127] SATIP-ERROR: failed to send section data (752 bytes) [device=0]: error 104 'Connection reset by peer'
    Jan 08 07:55:43 Orion vdr[6121]: [6127] SATIP-ERROR: failed to send section data (732 bytes) [device=0]: error 32 'Broken pipe'
    Jan 08 07:55:43 Orion vdr[6121]: [6127] SATIP-ERROR: failed to send section data (1021 bytes) [device=0]: error 32 'Broken pipe'
    Jan 08 07:55:43 Orion vdr[6121]: [6127] SATIP-ERROR: failed to send section data (702 bytes) [device=0]: error 32 'Broken pipe'
    Jan 08 07:55:43 Orion vdr[6121]: [6127] SATIP-ERROR: failed to send section data (518 bytes) [device=0]: error 32 'Broken pipe'
    Jan 08 07:55:43 Orion vdr[6121]: [6127] SATIP-ERROR: failed to send section data (808 bytes) [device=0]: error 32 'Broken pipe'

    Der error 32 kommt dann bis zum umschalten auf den nächsten Sender.

  • Also wird in send() versucht einige bytes zu schicken, aber die Empfangsseite schließt die Verbindung und lässt bytes in der pipe übrig:

    ECONNRESET /* Connection reset by peer */


    Danach ist die Verbindung geschlossen auf der Gegenseite und jeder Sendeversuch wird mit

    EPIPE /* Broken pipe */

    scheitern.


    Ich frage mich nur, ob dein VDR irgendwie zu knapp an ressourcen ist oder warum das passiert.

    In jedem Fall wäre es wohl sinnvoll, beide sockets zu schließen bei diesem Fehler code, das socket paar ist nicht mehr existent.

    Aber dazu sehe in diesem code stück noch nicht gut genug durch.

  • wirbel

    Ich habe es nun mal mit wireshark analysiert. Es wird brav eine TCP Verbindung für jeden Kanalwechsel auf und zu gemacht. Nach dem dritten umschalten (jetzt mal grad im Test) kommt dann aber der error 32 und error 104 obwohl die TCP Verbindung weiterhin offen ist.

    Das scheint mir ein Problem mit der internen Socketverwaltung zu sein.

  • Ich kann den Fehler mit der aktuellsten git Version leider nicht nachstellen - es tritt bis jetzt bei mir nicht auf.

    Leider kann ich nur durch diesen fremden Code langsam durcharbeiten, was Zeit kostet die ich kaum noch habe..


    Die originalen Autoren wären hier gerade wirklich hilfreich, ich bin da kein Experte.



    Was ich glaube zu verstehen ist soweit

    - der Fehler stammt hoffentlich nicht von meinen Änderungen im Fork des Plugins, da du diesen Fehler schon vorher in Rolfs upstream beobachtest hast.

    -> der Fehler tritt bei Debian bullseye nicht auf

    -> der Fehler tritt auch mit der main branch auf.


    - es dreht sich um bidirektionale Kommunikation von 2 Sockets, bei denen eines der Sockets unerwartet geschlossen wurde

    - dein Fehler passt irgendwie - weil closed Socket related - zum aktuellen Problem von pixelpeter. Das habe ich noch nicht verifizieren können, aber es riecht danach.

    - in deinem Fall wird das Paar von Socket erzeugt in sectionfilter.c:53

    Code
      if (socketpair(AF_UNIX, SOCK_SEQPACKET, 0, socketM) != 0) {

    - AF_UNIX zusammen mit SOCK_SEQPACKET bedeutet, dass IPC (Inter Process Communication) das Thema ist -> kein wireshark

    - wenn eines der Sockets unerwartet geschlossen wird, aber epoll benutzt wird, dann landet man in den üblichen Fehlermeldungen


    Genug für heute.

  • Hi,


    Ich teste ja gerade mit dem satip plugin.

    Unter Debian buster gibt es den Fehler mit dem sectionfilter nicht, unter debian testing kernel 6.5.0 tritt das hier auch massiv auf.

    Auch mit dem Fehlercode 32.


    Was mir dabei auffällt sind die dropped packets unter RX


    enp2s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500

    inet 192.168.30.22 netmask 255.255.255.0 broadcast 192.168.30.255

    inet6 fe80::ea9c:25ff:fe79:97fc prefixlen 64 scopeid 0x20<link>

    ether e8:9c:25:79:97:fc txqueuelen 1000 (Ethernet)

    RX packets 176904 bytes 235407876 (224.5 MiB)

    RX errors 0 dropped 502 overruns 0 frame 0

    TX packets 1158 bytes 399733 (390.3 KiB)

    TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0


    Peter

    VDR1: ASUS N100I-D D4 + IP TV Plugin + Flirc + softhddevice-git VAAPI + vdr-2.6.5 + 3 weitere Plugins + Debian Bookworm via M2 + Kernel 6.1.0


    VDR2: ASUS AT3IONT-I + PCTV USB Stick 461e + Nvidia 340.108 + Flirc + softhddevice-git + vdr-2.6.4 + 8 weitere Plugins + Samsung U70 + Debian Bullseye via SSD + Kernel 6.3.6 + LG 55 Zoll

  • Und buster hat einen älteren kernel, vermute ich. Am epoll interface wurde wohl im kernel geschraubt, evtl tauchen dadurch ältere Fehler auf im Plugin.

  • Ich habe Quatsch geschrieben, mein produktives System ist nicht buster sondern bullseye. Hier mit Kernel 6.3.6.

    Dafür ist jetzt der ominöse epoll Fehler nicht mehr da.



    Peter

    VDR1: ASUS N100I-D D4 + IP TV Plugin + Flirc + softhddevice-git VAAPI + vdr-2.6.5 + 3 weitere Plugins + Debian Bookworm via M2 + Kernel 6.1.0


    VDR2: ASUS AT3IONT-I + PCTV USB Stick 461e + Nvidia 340.108 + Flirc + softhddevice-git + vdr-2.6.4 + 8 weitere Plugins + Samsung U70 + Debian Bullseye via SSD + Kernel 6.3.6 + LG 55 Zoll

  • Wenn ich das Plugin mit nur einem Frontend starte dann habe ich den Fehler nicht, bzw nur zwei drei Zeilen.


    -P'satip -s 192.168.30.29|DVBS2-1:S19.2E|minisatip:0x80'


    Das Log wird auch nicht sofort, sondern erst nach ca einer Minute geflutet. Eventuell der EPG Scan auf dem zweiten device?



    Peter

    VDR1: ASUS N100I-D D4 + IP TV Plugin + Flirc + softhddevice-git VAAPI + vdr-2.6.5 + 3 weitere Plugins + Debian Bookworm via M2 + Kernel 6.1.0


    VDR2: ASUS AT3IONT-I + PCTV USB Stick 461e + Nvidia 340.108 + Flirc + softhddevice-git + vdr-2.6.4 + 8 weitere Plugins + Samsung U70 + Debian Bullseye via SSD + Kernel 6.3.6 + LG 55 Zoll

  • Ich vermute, es gibt bei neueren Kerneln eine Art race zwischen dem Ausführen von


    epoll_ctl(fdM, EPOLL_CTL_DEL, ...)


    und getriggert durch


    tuner.c:516

    Hier wird das pollen zweier Sockets mit epoll beendet und unmittelbar danach der file descriptor geschlossen. Falls der Kernel das nicht sofort erledigt, sondern erst einige Befehle später, nachdem der file descriptor schon zu ist, dann würde bei jedem Kanalwechsel auf einem Satip device potentiell die Meldung kommen. Nicht funktional einschränkend (weil kein ohne Effekt), aber sehr lästig.


    Die man page zu epoll sagt dazu


    Zitat

    Q6

    Will closing a file descriptor cause it to be removed from all epoll sets automatically?

    A6

    Yes, but be aware of the following point. A file descriptor is a reference to an open file description (see open(2)). Whenever a descriptor is duplicated via dup(2), dup2(2), fcntl(2) F_DUPFD, or fork(2), a new file descriptor referring to the same open file description is created. An open file description continues to exist until all file descriptors referring to it have been closed. A file descriptor is removed from an epoll set only after all the file descriptors referring to the underlying open file description have been closed (or before if the descriptor is explicitly removed using epoll_ctl(2) EPOLL_CTL_DEL). This means that even after a file descriptor that is part of an epoll set has been closed, events may be reported for that file descriptor if other file descriptors referring to the same underlying file description remain open.

    Mit anderen Worten, wenn man einen file descriptor schließen möchte, dann erledigt der Kernel diesen Löschvorgang von selbst.


    Meine Frage: wenn du alle Vorkommen von


    Code
    cSatipPoller::GetInstance()->Unregister(<foobar>);

    aus tuner.c löschst (4x in der datei), hast du irgendwelche negativen Effekte? pixelpeter, kannst du mal testen?

  • Hallo wirbel,


    nein hat nichts gebracht.

    jetzt sieht es sogar so aus:


    Jan 10 18:22:56 vdr2 vdr[1863]: [1868] SATIP-ERROR: failed to send section data (186 bytes) [device=0]

    Jan 10 18:22:56 vdr2 vdr[1863]: [1869] tp 111493 (5100/70) read incomplete section - len = 2051, r = 4096

    Jan 10 18:22:56 vdr2 vdr[1863]: [1869] tp 111493 (5100/00) read incomplete section - len = 3, r = 4096

    Jan 10 18:22:56 vdr2 vdr[1863]: [1869] tp 111493 (5100/70) read incomplete section - len = 2051, r = 4096

    Jan 10 18:22:56 vdr2 vdr[1863]: [1869] tp 111493 (5100/56) read incomplete section - len = 1115, r = 4096

    Jan 10 18:22:56 vdr2 vdr[1863]: [1869] tp 111493 (5100/70) read incomplete section - len = 2051, r = 4096

    Jan 10 18:22:56 vdr2 vdr[1863]: [1869] tp 111493 (5100/00) read incomplete section - len = 3, r = 4096

    Jan 10 18:22:56 vdr2 vdr[1863]: [1869] tp 111493 (5100/56) read incomplete section - len = 1115, r = 4096

    Jan 10 18:22:56 vdr2 vdr[1863]: [1869] tp 111493 (5100/70) read incomplete section - len = 2051, r = 4096

    Jan 10 18:22:57 vdr2 vdr[1863]: [1869] tp 111493 (5100/70) read incomplete section - len = 2051, r = 4096

    Jan 10 18:22:57 vdr2 vdr[1863]: [1868] SATIP-ERROR: failed to send section data (186 bytes) [device=0]

    Jan 10 18:22:57 vdr2 vdr[1863]: [1869] tp 111493 (5100/70) read incomplete section - len = 2051, r = 4096

    Jan 10 18:22:57 vdr2 vdr[1863]: [1869] tp 111493 (5100/00) read incomplete section - len = 3, r = 4096

    Jan 10 18:22:57 vdr2 vdr[1863]: [1869] tp 111493 (5100/56) read incomplete section - len = 1115, r = 4096

    Jan 10 18:22:57 vdr2 vdr[1863]: [1869] tp 111493 (5100/00) read incomplete section - len = 3, r = 4096

    Jan 10 18:22:57 vdr2 vdr[1863]: [1869] tp 111493 (5100/80) read incomplete section - len = 2051, r = 4096

    Jan 10 18:22:57 vdr2 vdr[1863]: [1869] tp 111493 (5100/00) read incomplete section - len = 3, r = 4096

    Jan 10 18:22:57 vdr2 vdr[1863]: [1869] tp 111493 (5100/80) read incomplete section - len = 2051, r = 4096

    Jan 10 18:22:57 vdr2 vdr[1863]: [1868] SATIP-ERROR: failed to send section data (186 bytes) [device=0]

    Jan 10 18:22:57 vdr2 vdr[1863]: [1869] tp 111493 (5100/80) read incomplete section - len = 2051, r = 4096

    Jan 10 18:22:57 vdr2 vdr[1863]: [1869] tp 111493 (5100/00) read incomplete section - len = 3, r = 4096

    Jan 10 18:22:57 vdr2 vdr[1863]: [1869] tp 111493 (5100/80) read incomplete section - len = 2051, r = 4096

    Jan 10 18:22:57 vdr2 vdr[1863]: [1869] tp 111493 (5100/00) read incomplete section - len = 3, r = 4096

    Jan 10 18:22:57 vdr2 vdr[1863]: [1869] tp 111493 (5100/00) read incomplete section - len = 3, r = 4096

    Jan 10 18:22:57 vdr2 vdr[1863]: [1869] tp 111493 (5100/00) read incomplete section - len = 259, r = 4096

    Jan 10 18:22:57 vdr2 vdr[1863]: [1868] SATIP-ERROR: failed to send section data (186 bytes) [device=0]


    Peter

    VDR1: ASUS N100I-D D4 + IP TV Plugin + Flirc + softhddevice-git VAAPI + vdr-2.6.5 + 3 weitere Plugins + Debian Bookworm via M2 + Kernel 6.1.0


    VDR2: ASUS AT3IONT-I + PCTV USB Stick 461e + Nvidia 340.108 + Flirc + softhddevice-git + vdr-2.6.4 + 8 weitere Plugins + Samsung U70 + Debian Bullseye via SSD + Kernel 6.3.6 + LG 55 Zoll

  • Das sieht aus wie ein anderes Problem, ich werd den test bei Gelegenheit mal hier parallel machen.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!