Scanner Plugin Problem

  • Hallo,


    ich nutze VDR 1.2.6 mit dem Komplettpatch und habe folgendes Problem mit dem Scanner Plugin: Der Scan startet, Transponder werden gescannt, aber bei Frequenz 12248 restartet VDR (ohne update der channels.conf). /var/log/messages zeigt nur pam_unix process ended, VDR selbst gibt keine Meldung aus. Watchdog timer steht auf 90s. Trotzdem läuft der scan erst einmal 2-3 Minuten, bis VDR dann neu startet. Wenn es am Watchodg timer liegen würde, müsste der doch einen Eintrag in den messages hinterlassen. Ich habe auch schon mehrere channels.conf ausprobiert, immer dasselbe Problem.


    Hat jemand eine Idee, woran das liegen könnte?


    Danke und Gruß


    beta

  • Hi beta!


    Es liegt wirklich am Watchdog. Das Plugin ist leider nicht ganz konform programmiert, weil es während des gesamten Scannens VDR blockiert. Nimm am besten den Watchdog Parameter mal ganz aus Deinem Aufruf raus. Dann sollte der Scann auch durchlaufen.


    CU!

    Hardware: Gigabyte GA-970A-D3, AMD Athlon II X2 235e, 4GB RAM, Zotac GeForce 210 Synergy Edition 1GB, Corsair Force3 60GB SSD, Mystique SaTiX-S2 Dual, 6.4" TFT, Atric IR Einschalter Rev.5, Logitech Harmony 900, Samsung LE46A789 full HD LCD, Denon AVR-1910, USB Atmo-Light von Slime
    Software: yaVDR 0.5
    Streaming Client 1: Hauppauge MediaMVP
    Streaming Client 2: Telegant TG100 (wenn ich mal irgendwann die Zeit finde das UPnP-Plugin zu testen)

  • Habe so ein ähnliches Problem


    Wenn ich den scanner starte scannt er mir die Transponder bis 12285. Dann steht in der Konsole, mit der ich VDR gestartet habe "Speicherzugriffsfehler".


    Kann mir bitte jemand erklären was Watchdog ist/macht? Hat Watchdog vielleicht auch etwas mit meinem Problem zu tun?


    Kenne mich mit Linux LEIDER noch nicht so gut aus, da ich es erst 2 Wochen habe!



    Danke
    _______
    Karsten
    _______

  • Zitat

    Original von KBF
    Kann mir bitte jemand erklären was Watchdog ist/macht? Hat Watchdog vielleicht auch etwas mit meinem Problem zu tun?


    Kein Problem!
    Der Watchdog überwacht quasi VDR im Hintergrund, ob der noch richtig läuft, oder ob er hängt. Sollte sich VDR also in dem eingestellten Intervall nicht bei dem Watchdog melden, dann wird VDR gekilled und neu gestartet.
    Die Zeit wird in dem Aufruf von VDR übergeben. Der Parameter lautet "-w <t>" wobei <t> durch eine Zeit in Sekunden zu ersetzen ist. Bei der mitgelieferten runvdr liegt der Wert bei 30 Sekunden (glaube ich zumindest). Wird der Parameter ganz weggelassen, dann wird kein Watchdog gestartet. Das hat mir zumindest ermöglicht einen kompletten Scan laufen zu lassen.


    Dein Problem liegt aber wohl irgendwo anders. Der Watchdog sollte eigentlich irgendwas von "Timer expired" oder so ähnlich sagen und dann kommt die runvdr-Schleife mir "Restarting VDR...".


    Vielleicht hilft Dir das ja doch weiter.

    Hardware: Gigabyte GA-970A-D3, AMD Athlon II X2 235e, 4GB RAM, Zotac GeForce 210 Synergy Edition 1GB, Corsair Force3 60GB SSD, Mystique SaTiX-S2 Dual, 6.4" TFT, Atric IR Einschalter Rev.5, Logitech Harmony 900, Samsung LE46A789 full HD LCD, Denon AVR-1910, USB Atmo-Light von Slime
    Software: yaVDR 0.5
    Streaming Client 1: Hauppauge MediaMVP
    Streaming Client 2: Telegant TG100 (wenn ich mal irgendwann die Zeit finde das UPnP-Plugin zu testen)

  • Hallo,


    ich bins noch einmal und dieses mal mit der Lösung. Also, es ist NICHT der Watchdog timer, dann der schreibt wirklich so was wie watchdog timer expired in die messages.
    Und ja, bei mir war es auch _NUR_ der Transponder 12285. Ich habe das Problem gestern debugged. Das Problem ist folgendes:
    Zeile 115 in dvbscanner.c (scanner plugin Verzeichnis) lautet:
    for (struct TransportStream *ts = (struct TransportStream *)nwi->TransportStreams->Head;
    Wenn in der channels.conf ein Eintrag auf Transponder 12285 vorhanden ist, ist nwi->TransportStreams ein (*LIST)0x0, existiert also nicht. Daher kann auch nicht auf nwi->TransportStreams->Head zugegriffen werden. Hier gibt es dann ein Segmentation fault (sieht man nur, wenn man VDR manuell startet). Die Lösung ist recht einfach:
    Vor dieser Zeile bitte einfügen:


    if (nwi->TransportStreams != (* LIST)NULL)


    Dann wird die for-Schleife nur ausgeführt, wenn nwi->TransportStreams auch existiert und damit auch nwi->TransportStreams->Head.
    Bei mir hat das geholfen und scans funktionieren nun einwandfrei, auch mit einem Watchdog Timer von -w 60.
    Ich weiss nicht, warum der Pointer nicht exisitiert, ich hatte keine Lust mehr, das weiter zu debuggen und mein WAF (Wife acceptance factor) ist geschrumpft :)
    Ich hoffe, es hilft Euch auch.


    Gruß,


    beta

  • Hab das gemacht, aber es funktioniert trotzdem noch nicht!


    Hab sogar formatiert und Linux nochmal neu installiert, habe aber immer noch den gleichen Fehler.


    Habe was gelesen dass auch die channels.conf daran Schuld sein könnte, aber ich habe sie nach der Installation aus dem VDR-Verzeichniss kopiert und nicht verändert.


    Weiss denn niemand eine Lösung?

  • Hallo kbf,


    bitte mache mal folgendes. Gehe ins scanner plugin verzeichnis und mache ein make clean. Dann änderst Du das Makefile so, dass er das ganze im debug-moduls übersetzt:
    CXXFLAGS ?= -g -O2 -Wall -Woverloaded-virtual
    (-g dazufügen). Dann bitte zurück ins VDR-Verzeichnis und make plugins ausführen. Schmeiss dann mal aus Deiner channels.conf alle Zeilen raus (vorher bitte backup!), ausser einer einzigen, die den Transponder 12285 enthält (z.B. AB Moteurs). Dann wechsel bitte in das VDR Verzeichnis und starte vdr im debugger. Bitte folgende Befehle der Reihe nach ausführen (gdb sollte installiert sein).
    gdb
    file vdr
    run -c /pfad zu deiner channels.conf -P scanner
    Wenn er abstürtzt, sollte der gdb sagen, wo. Bitte poste mir diesen output mal, dann sehen wir weiter.


    gruß


    beta

  • Ich hoffe, dass ich das am Wochenende machen kann, denn ich habe zurzeit wenig Zeit.


    Aber was meinst du damit (bin mir nicht ganz sicher)?:
    und starte vdr im debugger


    Und wo sehe ich den Output von gdb nach dem absturz?




    Danke für die Hilfe!
    Karsten

  • Das Kommando gdb (biite von einer Konsole aus starten) öffnet einen Debugger. Damit kann man den Ablauf eines Programms kontrollieren und bei einem Absturz (z.B. Segmentatin fault) zeigt es Dir an, wo und evtl. auch warum es abgestürtzt ist. Dazu muss aber der Source-Code mit Debug-Option (siehe oben -g) übersetzt sein. Es reicht, wenn Du das Makefile des Scanner Plugins wie oben angegeben änderst. Mit dem Kommanda file <name> öffnest Du das Programm <name>, also in Deinem Fall vdr. mir run <parameter> startest Du das ganze im Debug Modus. Bitte mache dann noch mal den scan und poste den Output, den Du im gdb-Fenster (bash, csh, je nachdem, was Du benutzt) siehst. Bist Du denn sicher, dass Du die Änderung eingebaut hast, wie ich es oben beschrieben habe, und zwar als letztes? Ich hatte nälich dasselbe Problem (nur Transponder 12285) und das ist nun verschwunden.


    Gruß
    beta

  • @ beta
    Habe das gestern so gemacht wie du gesagt hast, lief danach auch ohne Fehler. ich glaube, dass ich in der dvbscanner.c einen Schreibfehler hatte (weiss ich aber nicht genau). Habe dreimal gescannt ohne Fehler und auch auf die Sender vom Transponder 12285 schalten können ohne Absturz. Doch als ich heute gescannt habe waren es wieder die gleichen Fehler. Ich werde morgen mal die Feler hier posten und hoffe, dass ihr mir helfen könnt.


    Karsten

  • Habe es heut noch mal getestet und es hat auch funktioniert.


    Mir ist aufgefallen, dass er gestern bei den Einstellungen Version 1.2.4 angezeigt hat und es muss irgendeinen Fehler in libvdr-1.2.4 (oder so) gegeben haben.
    Es könnte sein, dass ich gestern VDR gestartet habe, bevor ich den Treiber geladen habe.

  • Hallo Leute,


    ich hab das gleiche problem mit dem scanner plugin und transponder 12285.


    Das mit dem einfügen von

    Code
    if (nwi->TransportStreams != (* LIST)NULL)

    hat auch ned geholfen.


    Der Scanner lief durch wenn mann alle sender in der channels.conf löscht, die auf TP 12285 liegen ( die braucht man ja eh ned !)


    Aber beim nächsten scannen hing es dann wieder bei 12285.
    Ich dachte der scanner sucht nur auf transpondern, die eh in der channels.conf stehen !?!?


    Liegt's evtl. am AUTO PID ?


    Was habt ihr denn für ne lösung gefunden ?


    Gruß


    MrDASYLab

Jetzt mitmachen!

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