mplayer plugin geht nicht nach vdr restart

  • Hi (sorry lang ,aber kompliziert)


    seit neuestem stosse ich auf das Problem, das nach einem vdr restart (z.B. über init oder watchdog restart), das mplayer plugin nicht mehr will.
    Das Ganze äussert sich im logfile wie folgt:

    Code
    Jan 13 18:37:08 moviestar vdr: [15278] ERROR (dvbdevice.c,965): Bad file descriptor
    Jan 13 18:37:08 moviestar vdr: [15278] ERROR (dvbdevice.c,966): Bad file descriptor
    ...
    Jan 13 18:37:08 moviestar vdr: [15278] ERROR (dvbdevice.c,976): Bad file descriptor


    Danach kann ich kein plugin mehr starten, bekomme immer "Kanal blockiert (zeichnet auf) als Fehlermeldung.
    Nach VDR Neustart kann ich die Plugins wieder starten, aber sobald eben das mplayer-plugin ins Spiel kommt, fängt das Ganze von vorne an.


    Interessanter Weise ist nach einem Reboot (meistens) alles ok. Ein manuelles rmmod aller DVB Treiber (FF + budget PCI) inkl. frontends, v4l usw. mit anschliessendem Neuladen der dvb Treiber hilft (meistens) nicht.


    Um das Ganze nochmal spannender zu machen: es ist nicht genz deterministisch ;) Manchmal hilft ein VDR restart (meistens nicht, ca. 1%), manchmal ein Treiber reload (10%) und zu 99% hilft ein reboot.
    mplayer.sh lässt sich immer starten und funtioniert auch.
    Ich habe das Verhalten mit verschiedenen Kombinationen ausprobiert:
    - gentoo-kernel 2.6.18-r5 und -r6
    - vdr-1.4.4 und 1.4.5 mal als gentoo emerge mal mit USE="vanilla"
    - vdr-mplayer-0.9.15
    - mal die Kernel Treiber, mal die v4l-hg Treiber
    - mplayer im SLAVE & TRADITIONAL mode
    - alle plugins weg (bis auf mplayer)
    usw. usw.


    Mein Portage tree ist von ca. Anfang Januar, also alles ziemlich neu mit UDEV-103 usw.


    Hat jemand eine Idee oder das schon mal gesehen?


    Wenn ich mir die dvbdevice.c source anschaue, dann sieht es eben so aus, als ob der Filedescriptor eben nicht auf ein offenes DVB device zeigt, deshalb schlägt ioctl fehl.


    Gedubugged habe ich allerdings noch nicht, wollte erst mal sehen, ob jemand das Phaenomen auch kennt.


    Gruss
    Riggert

    Yavdr 0.3, OrigenAE S16V, ASUS P7H55, i3-530, MSI G210 passiv, 2x TT DVB-C 1501, OCZ VertexII 60GB, WD 1TB, Philips STR9320 FB

  • Ja, ist wohl richtig.
    Mehr kann ich momentan nicht bieten, da sich das log ziemlich ausschweigt.
    Mich wunderte bloss, dass keiner diese Symptome hat.
    Hab ein bischen debugging code eingefügt.
    So wie es aussieht, wird in cDvbDevice::setPlayMode mplayer mit den richtigen file descriptoren aufgerufen.
    Danach bricht aber mplayer ab (weiss noch nicht warum) und anschliessend sind die file descriptoren für audio und video jeweils "-1", d.h. invalide.
    Und werden bei starten eines neuen plugins nicht wieder aufgemacht, bzw. an einer anderen Stelle nicht abgeprüft -> kein plugin kann mehr starten.
    Muss aber zunächst mal an der Ursache weiterforschen.


    Weiss jemand wie ich bei gentoo vdr in einer SSH console starten kann mit startvdr (also output direct auf die aufrufende console)?. Des Console setup in etc/conf.d bringt mir nicht so viel.
    Zur Not kann ich mir natürlich auf ein eigenes startscript basteln, aber vielleicht geht's ja eleganter mit den existierenden scripten.


    Gruss
    Riggert

    Yavdr 0.3, OrigenAE S16V, ASUS P7H55, i3-530, MSI G210 passiv, 2x TT DVB-C 1501, OCZ VertexII 60GB, WD 1TB, Philips STR9320 FB

  • Ok, ich habe den Bösewicht gefunden.
    Auf der Console lief's zunächst verblüffender Weise (also nicht als daemon gestartet).
    ... bis ich dann bemerkt hatte warum: Ich habe beim console start erst mal abgewartet, bis sich der ganze console output beruhigt hat um besser debuggen zu können. Damit habe ich auch gewartet bis der weather-ng download der Wetterdaten (bei mir beim start von vdr) beendet war.
    Das mplayer plugin ging immer.
    Das ganze kann ich nun reproduzieren. Da meine netz-verbindung recht lahm ist, ist das im daemon mode nicht aufgefallen, wenn ich beim testen nach dem restart das mplayer plugin starte. Wenn ich den sofortigen download beim vdr start ausschalte, läuft es einwandfrei.
    Die Ursache, warum das mplayer plugin abbricht, war "DVB video device busy", und mplayer hat abgebrochen.
    Trotzdem unschön, dass danach im Grunde genommen kein Plugin mehr geht.


    Ich forwarde das an die plugin mailing-liste.


    Gruss
    Riggert

    Yavdr 0.3, OrigenAE S16V, ASUS P7H55, i3-530, MSI G210 passiv, 2x TT DVB-C 1501, OCZ VertexII 60GB, WD 1TB, Philips STR9320 FB

    Einmal editiert, zuletzt von riggert ()

  • Schalte den Autodownlad doch aus , wenn deine Verbindung so lahm ist.
    Aktualisierst es halt mit "OK". So oft wirst da doch wohl net reinschauen ;)
    Consolenoutput ware auch net verkehrt .
    Dafuer brauchst du es nicht per Hand starten , sondern
    auffer Console nachschauen , wo VDR gestartet wird.
    -> /etc/conf.d/vdr -> Term=/dev/?? (oder so)

  • Ja klar, ist jetzt aus und wir per cron upgedated.
    Es geht mir eher darum, dass das plugin für den download das video device blocked (ca. 15 sekunden bei mirt). Ich denke das sollte so nicht sein, es könnte ein neuer download thread gestartet werden. Wenn der server mal down ist oder ein Problem hat, dann würde das plugin die connection timeout abwarten und die kann wesentlich länger sein.
    Ausserdem sollte vdr nicht kanal blockiert zeigen, wenn das mplayer plugin mal abkachelt.
    Der reset in einen validen Zustand wäre sicher sauberer.


    Mit der console umschalten ist nicht so einfach ohne monitor dran ;)
    Wenn dann wollte ich mir eher den output auf die ssh console umlenken.

    Yavdr 0.3, OrigenAE S16V, ASUS P7H55, i3-530, MSI G210 passiv, 2x TT DVB-C 1501, OCZ VertexII 60GB, WD 1TB, Philips STR9320 FB

  • Noe , ich lasse das Script bewusst im Vordergrund laufen.


    Wenn einem das stoert , dann benennt er eben das Script
    "weatherng.sh" nach z.B "getdata.sh" um und erstellt
    nen neues Script "weatherng.sh" , welches "getdata.sh" im
    Hintergrund aufruft ala :


    #!/bin/sh
    /path/getdata.sh &

  • @ Morone


    Weil Du gerade in den Posting hier rumhängst ;)


    Der wget Aufruf "wget -t 4 -T 20 ..." ist an sich auch ein bisschen unglücklich umgesetz.


    wget -t "4 Versuche" -t "jeweils 20 sek" und das mal der Anzahl der wget Aufrufe
    ist echt ätzend wenn die Internetverbindung zwichenzeitlich mal weggebrochen sein sollte.
    Der ganze Download Versuch hängt dann minutenlang fest und Blockiert das OSD, falls nicht zwichenzeitlich die Watchdog zuschlägt.


    Ich hab den ganzen wget Kram in einen konstrukt für die Gentoo User gepackt.


    PHP
    if ping -c2 83.97.42.2 > /dev/null ; then
    wget .....
    wget....
    wget....
    
    
    fi

    Wenn der ping nicht funzt bricht das Script das gleich ab.


    Cheers :prost2


    /bin/joerg

Jetzt mitmachen!

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