streamdev: output buffer overflow

  • Hallo,


    ich habe in den letzten Tagen meinen easyVDR-VDR inkl. des streamdev-Patchesneu kompiliert (vdr-1.6.0-ext60). Das Streamdev-Plugin ebenso gepatcht und neu gebaut.
    Auf einem Ubuntu 9.04 hatte ich dazu hepis xbmc (von vorgestern) installiert. Damit lief dann beides, nur leider konnte ich keinen einzigen Sender sehen, immer kamm "Kanal blockiert oder verschlüsselt". Alles andere lief soweit, ich konnte die Channelliste sehen, Time anlegen usw.
    Heute habe ich hepis neuen xbmc (pre_9.10...) aus seinen repos als binary installiert, damit blieb xbmc mit aktiviertem TV-Plugin sofort mit 100% CPU-Last hängen. Im Log steht als letztes:


    Code
    PVR: TV Database holds no channels, reading channels from client


    Der VDR zeigt jede Menge Zeilen mit:


    Code
    ERROR: streamdev: output buffer overflow (VTP) for 192.168.0.122:40426


    und macht dann den streamdev-Port zu. Streaming in den Browser geht nach wie vor.


    Nun gabs genau das hier im Forum ja auch schonmal, da war das Problem, dass zuviele Aufnahmen im VDR vorhanden waren. Den "Hack", der dazu damals für den Streamdev-Servers vorgestellt wurde, habe ich auch ausprobiert - ohne Erfolg. Wenn ich unter /home/<user>/.xbmc alles lösche und dann xbmc starte, dann kann ich unter Settings das PVR-Addon zwar auswählen und einstellen, aber dann nicht aktivieren. Gehe ich noch im Einstellungsdialog (wo man die IP des VDR angibt) auf OK, kommt folgende Meldung:


    A unknown error is occured
    Add-on can not used


    In diesem Zusammenhang tauchen im xbmc.log keine Fehler auf. Er sagt mir nur welche Buttons geladen wurden und dann noch "Dialog OK". Nur eine Zeile sagt evtl. was aus, sieht aber für mich auch nicht nach 'ner Fehlermeldung aus:


    Code
    Info: Called Add-on status handler for '6' of ClientName:VDRClient, clientGUID:<viele Zahlen und Buchstaben>


    Gehe ich aus dem Dialog raus mit "Cancel" und will TV trotzdem aktivieren, bleibt xbmc wieder hängen, an genau der gleichen Stelle wie oben (laut log).
    Jetzt hab ich mir den neusten pvr-testing-branch gezogen (21192) und gebaut, leider hat das nichts geändert.


    Hat jemand 'ne Idee? Danke schonmal...


    Gruß, Nix

    • Server: Gigabyte H67-Board, i3-2120, 8GB Ram, 12 TB Video-Part., ca. 5000 Aufnahmen, 5x DVB-S (2x Cine S2, 1x USB), easyVDR 2.0 headless

    • WoZi-Client: Zotac ZBox ID86, Hama-MCE mit Harmony, keine Tuner, reiner Streaming-Client, easyVDR 2.0

    • zur Zeit wegen Pay-TV-Problematik leider nur E2-Infrastruktur

  • Habe inzwischen festgestellt, dass es trotzdem am zu vollen Aufnahmeverzeichnis liegt (fast 1 Terabyte). Benenne ich das auf dem VDR um und gebe ihm ein leeres, dann läuft das PVR-Addon. Der "Hack" funktioniert hier nicht. Ausserdem dann habe ich nun wieder die (neue) Fehlermeldung "Kanal nicht verfügbar" bei ziemlich vielen Kanälen, obwohl ich zwei Karten im VDR habe und keine Aufnahme lief. Hmpf.


    Gruß, Nix

    • Server: Gigabyte H67-Board, i3-2120, 8GB Ram, 12 TB Video-Part., ca. 5000 Aufnahmen, 5x DVB-S (2x Cine S2, 1x USB), easyVDR 2.0 headless

    • WoZi-Client: Zotac ZBox ID86, Hama-MCE mit Harmony, keine Tuner, reiner Streaming-Client, easyVDR 2.0

    • zur Zeit wegen Pay-TV-Problematik leider nur E2-Infrastruktur

  • Nachdem ich pingpongs neusten Patch für streamdev eingespielt habe, gibts leider noch immer keine Besserung. Im xbmc.log steht jetzt allerdings:


    Code
    19:32:59 T:3045836688 M:491458560    INFO: AddOnLog: PVRDLL/VDRClient: CVTPTransceiver::Open - server greeting: Welcome to Video Disk Recorder (VTP) 
    19:32:59 T:3045836688 M:491458560   DEBUG: AddOnLog: PVRDLL/VDRClient: VTPTransceiver::GetStreamData - local address 192.168.1.122:36592 
    19:32:59 T:3045836688 M:491458560   DEBUG: AddOnLog: PVRDLL/VDRClient: CVTPTransceiver::OpenStreamSocket - listening on 0.0.0.0:48526 
    19:32:59 T:3045836688 M:491458560  NOTICE: PVR: TV Database holds no channels, reading channels from client

    wobei mir die Adresse "0.0.0.0" in der dritten Zeile auffällt. Was bedeutet das?


    Gruß, Nix

    • Server: Gigabyte H67-Board, i3-2120, 8GB Ram, 12 TB Video-Part., ca. 5000 Aufnahmen, 5x DVB-S (2x Cine S2, 1x USB), easyVDR 2.0 headless

    • WoZi-Client: Zotac ZBox ID86, Hama-MCE mit Harmony, keine Tuner, reiner Streaming-Client, easyVDR 2.0

    • zur Zeit wegen Pay-TV-Problematik leider nur E2-Infrastruktur

  • Hallo


    Ich hatte die folgenden zwei Beiträge wohl im falschen Thread, da ich am Anfang durch meine gefluteten Logs auf einer falschen Fährte war.


    Ich benutze momentan den gepatchten streamdev (vdr-streamdev-0.5.0-pre-20090706.tgz) mit XBMC-Support von http://streamdev.vdr-developer.org/ und habe damit ein Problem, welches am Anfang dieses Threads geschildert wurde.


    Meine user.log und syslog werden mit folgender Meldung überflutet:

    Zitat

    ERROR: vdr streamdev: Handler in LSTX command is NULL


    Aktuell im Einsatz sind:

    • VDR 1.6.0-8ctvdr (e-tobi pool-lenny vdr-multipatch)
    • streamdev-0.5.0-pre-20090706 für XBMC
    • XBMC Revision 21751 (xbmc svn pvr-testing branch)


    Ich habe auch schon die vdrdevel 1.7.8 multipatch selbst kompiliert und getestet.
    Ausserdem habe ich schon verschiedene streamdev Versionen gepatcht und ausprobiert. Das Resultat ist immer dasselbe.


    Folgendes habe ich auch getestet:


    Dabei gab es keine Logmeldungen oder Fehlermeldungen auf der Konsole.


    Aufgrund der verschiedenen getesteten VDR und streamdev Versionen denke ich, dass das Problem evtl. bei XBMC liegt.
    Der Beitrag ist deshalb hier im VDR Forum gelandet, da sich hier anscheinend eher mit der VDR Integration beschäftigt wird, als im XBMC Forum.


    Ich bin für jeden Hinweis dankbar.

  • Es gibt ein paar Neuigkeiten zu meinem Problem mit den überfluteten Log-Dateien. Es ist nicht der neu eingebaute "LSTR" Befehl der Probleme macht, sondern der Befehl "LSTE".


    Im Syslog steht ein:
    Jul 29 12:31:15 vdr vdr: [10673] ERROR: streamdev: output buffer overflow (VTP) for 192.168.0.64:45955


    bevor dann ewig viele Einträge hiervon kommen:
    ERROR: vdr streamdev: Handler in LSTX command is NULL


    Eventuell lässt sich das mit einem erhöhten Timeout lösen.


    P.S.: Ein erhöhtes Timeout ändet nichts.


    P.P.S.: Auch nach verschiedenen Versuchen mit erhöhten Buffern in streamdev (MAXPARSEBUFFER) bzw. in VDR (recorder.c, transfer.c, dvbplayer.c) bekomme ich es nicht hin. Meine EPG Daten, welche wohl das Problem sind, bekomme ich per tvm2vdr.
    Die ersten Daten holt sich XBMC noch brav, aber nach kurzer Zeit (etwa 2s) bekommt streamdev einen output buffer overflow und dann geht nichts mehr.


    Was ich bei dem ganzen Stress total vergessen habe.
    Vielen Dank für die tolle Arbeit am streamdev-server und XBMC Addon. Ist zwar noch nicht ganz stabil, aber funktioniert schon echt gut :tup

  • Da es nur eine Stelle im streamdev-server gibt, an der die Fehlermeldung "output buffer overflow" gesetzt wird, habe ich einfach mal folgende Änderung in der server/connection.c gemacht:

    Code
    111c111
    <       if (m_WriteBytes + length + 2 > sizeof(m_WriteBuffer)) {
    ---
    >       if (m_WriteBytes + length + 1 > sizeof(m_WriteBuffer)) {


    Und siehe da, es gibt keinen "ERROR: streamdev: output buffer overflow" mehr und auch keine "ERROR: vdr streamdev: Handler in LSTX command is NULL".
    Bei den ersten Tests habe ich auch die EPG-Daten und alle meine Aufnahmen in XBMC gesehen.


    Ich weiß natürlich nicht, ob ich mit dieser Änderung einen Fehler in den streamdev-server einbaue. Das sollte evtl. mal jemand prüfen, der sich mit dem streamdev besser auskennt.

  • Der Fix im letzten Beitrag hat das Problem leider nicht gelöst, sondern nur reduziert. Die Fehlermeldungen haben dann erst nach über zwei Stunden angefangen und nicht nach ein paar Sekunden.


    Folgender Fix im streamdev funktioniert besser:


    Allerdings gibt es auch hier keine Garantie, dass irgendetwas dadurch nicht mehr geht. Falls der buffer zu groß war, wird einfach die Länge auf das Maximum begrenzt und trotzdem kopiert. Evtl. werden dabei wichtige Zeichen abgeschnitten.
    Im syslog kommt noch der Fehler "ERROR: streamdev: output buffer overflow", aber danach scheint er wieder normal weiterzumachen.


    Hat eigentlich noch jemand anders Probleme damit oder ist das bei Allen gelöst?

  • Sorry, aber das ist alles um das Problem herumgebastelt.


    Workaround: MAXPARSEBUFFER deutlich vergrößern - bei Deinem ersten Versuch hast Du da vermutlich noch nicht genug Speicher verwendet oder beim Kompilieren ging etwas schief und Du hattest noch die alte Größe.


    Saubere Lösung die ich dann auch gerne in streamdev einchecke: Puffergröße dynamisch erhöhen (siehe z.B. VDR Quelldatei svdrp.c).

  • Jepp, sehe ich ein! Werde nochmal mit dem MAXPARSEBUFFER spielen. Hatte ihn beim ersten Versuch von 16kB auf 32kB erhöht und dachte die doppelte Größe sollte reichen.


    Vielen Dank für die Info.

  • gibts es einen neuen stand?


    ich habe ebenfalls das problem, dass ich zuviele aufnahmen für den xbmc unter mac habe.

    --------------------------------------------------------------------------------------------------------------------------------------------------

    BM2LTS im VDR-Portal   http://www.bm2lts.de   http://www.sc-schulze.de

    --------------------------------------------------------------------------------------------------------------------------------------------------

    Empfang: Octopus Net S2 max (8 Tuner) + Octopus Net S2 max (8 Tuner) + Netceiver (2x DVB-s2dual)

    Kopfstation: Virtuelle Maschine mit BM2LTS v3.4.XX

    Clients: NUC10i5FNH2 -> BM2LTS v3.4.XX; FireTV4k mit Kodi u. VNSI-Plugin

    NAS: Aufnahmen u. Plex-Media

    --------------------------------------------------------------------------------------------------------------------------------------------------


Jetzt mitmachen!

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