OE2: autotimer führt dazu dass die dreambox nicht mehr auf FB und frontpanel reagiert

  • Hallo,


    unter OE2 (alle drei bisher released, 20120512 heute) tut die DM7020HD wenn sie autotimer parsed nach kurzer Zeit nicht mehr am frontpanel oder auf die Fernbedienung reagieren.


    ssh auf die dream geht immer noch, load ist niedrig.


    Zum reproduzieren hab ich zwei mal 'Parse' am AutoTimer WebF losgetreten, QObject: Cannot create children for a parent that is in a different thread. kommt konsistent.


    die Ausgabe von enigmal2.sh ist in eine Datei umgebogen in der inittab. In der Ausgabe sieht man


    Die EPGC cleanloops laufen dann interwallweise weiter.
    Normalerweise setzt ich kurz nachdem das passiert ein 'reboot' per ssh ab was dann auch sauber durchläuft.


    FWIW: In syslog kommt keine Meldung wenn der Fehler passiert.


    Versionen:
    Enigma2 v4.0.0 (revision: tarball-20120509-0-g58f61a2, date: 2012-05-09)
    enigma2-plugin-extensions-autotimer - 3.999+git4278+6e15900-r0

    Einmal editiert, zuletzt von pcfe ()

  • Hallo Forum,


    das beschriebene Phänomen habe ich leider auch auf meiner DM7020HD. Ich habe die letzten OE2-experimentals durchprobiert und der Fehler tritt bei allen Versionen auf. Bei den Tests habe ich nur das Autotimer-Plugin installiert. Sobald ich einen Autotimer anlege und speichern möchte, bleibt die Box stehen und reagiert auf nichts mehr. Bei einem leeren EPG (nach dem harten Ausschalten) kommt das Plugin über das Speichern hinweg, findet natürlich nichts. Ist das EPG gefüllt - s.o.


    Zur Box: Aktuell läuft die mit zwei DVB-T-Tunern (Sat ist noch nicht da...)


    Ich habe keinen aktuellen Thread mit so einem Problem im Inet gefunden, obwohl es hier und da Berichte über "Hänger" gibt, die aber von der Ursache nicht zu meinem Problem passen.


    Ein Flash mit "Bad Sector Recovery" hat zwar zwei Sektoren makiert, führte jedoch nicht zu einer Besserung. Unter OE1.6 funktioniert alles wie es soll.


    Hat jemand eine Idee?


    Vielen Dank im voraus!


    Gruselino

  • Ist das vielleicht ein spezielles 7020- Problem? Ich habe den autotimer auf meiner 8000er am laufen, das aktuellste OE2.0- Experimental auf der Box (erst gestern wieder upgedated) und der AutoTimer blieb noch nie hängen.
    Sehr seltsam...
    Der Fehler sieht so aus, als ob er vom QT Browser kommt... Ihr habt nicht zufällig per QUickbutton oder so den Autotimer auf die rote Taste gelegt?


    Gruss
    Tode

  • Ich habe auf meiner 7020HD das aktuelle Experimental (20120912) drauf und die aktuellen Plugins vom EPGRefresh und AutoTimer sowie SeriesPlugin. Alle 26 Regeln des Autotimers laufen sauber durch, hatte da noch nie ein Problem seit Monaten...



    Edit: Vergessen zu sagen, dass ich eine reine DVB-S/S2 Box habe, also kein DVB-T-



    Gruß Mike

    Einmal editiert, zuletzt von Mike.R ()

  • ist das nicht das problem wenn es DVB-T/C in kombination mit DVB-S tuner gibt


    hab ich vor ein par wochen im IRC auch mal gemeldet


    (war irgenwie eine nebenwirkung von ein bugfix)

  • Hi,


    war vielleicht nicht besonders pfiffig, mich an den alten Thread zu hängen. Die Fehlermeldung (log) aus dem ersten Post habe ich nicht. Nur das Verhalten bei der Nutzung des Autotimers ist identisch. Daher fand ich das eigentlich ganz passend.


    Ich erstelle mal ein log vom enigma2, allerdings als ich das schon einmal gemacht hatte, war da (für mich) nichts auffälliges zu sehen.


    Gruselino

  • Hi,


    scheinbar bin ich der einzige, der dieses Problem hat. :confused_face:


    Gibt es eine Möglichkeit das Plugin in einen "Debug-Mode" zu versetzen, so dass ich vielleicht selber dem Problem näher kommen kann?
    Mein oben angehängter Logfile zeigt zumindest mir keinen offensichtlichen Fehler an.


    Oder muss ich in alle Ewigkeit auf der 1.6 bleiben?


    Danke!


    Gruß
    Gruselino

  • Threading in Opendreambox 2.0 basierten Images suckt und ohne Threading suckt der AutoTimer.


    Siehe z.B. im WebIf, dass write/finish des request zwingend vom Coder auf dem Mainthread ausgeführt werden müssen (siehe 120418473e2f851c5092bc42382eddd7f07d0159, sonst gab jeder threaded request im AutoTimer die Fehlermeldung).




    Ein voll asynchrones arbeiten mit vor- und zurückspringen aus/in den Mainthread erfordert einen umfangreichen Rewrite des parsing-Codes und dafür habe ich weder Lust noch Zeit. Plus das macht den Code unwartbar(er)…
    Oh, ich habe übrigens keine Ahnung warum bei manchen Leuten eine Aufnahme nur aus dem Mainthread gestartet werden kann. Ich nehme mir ein Beispiel an der Politik und gebe spontan einfach jeder anderen Zeile Code die Schuld :winking_face:

    Homescreen eurer Apple-Geräte noch nicht voll genug?


    dreaMote: Fernbedienung für Dreamboxen
    Mobile WOL: Wake-on-LAN Client für iOS mit optionalem Widget
    My Home Remote: Fernkontrolle für Homematic CCU/CCU2 optimiert für mobile Benutzung

    • Offizieller Beitrag
    Code
    Oh, ich habe übrigens keine Ahnung warum bei manchen Leuten eine Aufnahme nur aus dem Mainthread gestartet werden kann


    Weil enigma2 an sich nicht threadsafe war, ist und wohl auch nie sein wird.


    Man kann jederzeit python threads nutzen, der Aufruf von funktionen die zurück nach C++ führen ist dann aber innerhalb der Threads Tabu (möglich, macht aber ggf. alles kaputt).


    Aufnahmen aus fremden Threads zu starten ist schlicht und einfach falsch. Warum auch, das blockiert nicht.
    Für solche Dinge gibt's Messagepumps und Locks.


    Aufgrund der o.G. einschränkung bringt es auch nix die Requestverarbeitung im webif in threads zu packen, denn Dinge wie EPG sind nun mal im core und dürfen damit eh nicht aus einem python-thread gerufen werden.
    Das würde nur an recht wenigen Stellen tats. helfen ein Blockieren der Mainloop zu vermeiden (mir fällt nur /web/getallservices ein).
    Dass die Komplexität damit nur weiter zunimmt hast du ja selbst geschrieben ;).

  • Die Komplexität des AutoTimer würde unproportional zum Nutzen zunehmen.


    Mit gewissen Einstellungen kann die Suche (nicht die "Suche" von Enigma2, sondern die erweiterten Suchoptionen im Plugin) locker > 30s dauern - soll das wirklich blockierend im MainThread gemacht werden?
    Und durch die Art und Weise wie der RecordTimer inkl. TimerSanityCheck implementiert ist, können die also nur vom MainThread aufgerufen werden.


    Du hast nicht richtig gelesen - nicht der AutoTimer ist da schlecht, sondern Enigma2 :winking_face:


    Der AutoTimer müsste MASSIV Threads spawnen, die immer bei einem möglichen Match zurück zum MainThread springen um zu versuchen eine Aufnahme zu starten um dann wieder zurück in einen Child zu wechseln.
    Im Endeffekt würde das ganze dadurch nur noch langsamer werden - ein wenig Threadsafety der entsprechenden Funktionen in Enigma2 ist trivialer :winking_face:


    *EDIT* Grad erst Ghosts Reply gesehen. Wie schon geschrieben gibt es etwaige Funktionen im AutoTimer die durchaus > 30s laufen bei einem Haufen Nutzer (und für mich selbst läuft eine Funktion spätestens dann zu lang, wenn ich die grauenhaften Zahnräder sehe). Deshalb sind im AutoTimer WebInterface einige Requests in Threads gepackt. Und der benannte Commit war halt beim Wechsel von Opendreambox 1.6 auf 2.0 notwendig.

    Homescreen eurer Apple-Geräte noch nicht voll genug?


    dreaMote: Fernbedienung für Dreamboxen
    Mobile WOL: Wake-on-LAN Client für iOS mit optionalem Widget
    My Home Remote: Fernkontrolle für Homematic CCU/CCU2 optimiert für mobile Benutzung

    • Offizieller Beitrag

    Dass e2 an sich nicht thread-safe ist ist lange bekannt, dass einfach gekonnt zu ignorieren und dann zu behaupten e2 wäre schlecht halte für ziemlich gewagt ;).


    Was spricht dagegen die Ergebnisse des ATs in Batches abzuarbeiten statt jedes für sich?
    Außer "hab ich keine Lust"?

  • Ich habe das gleiche Problem mit dem Autotimer Plug In unter OE2.0. Meine Dream 800SE friert auch ein. Das ist ärgerlich, da ich dadurch nicht auf OE2.0 umsteigen kann.


    Gibt es abseits der Threading Diskussion vielleicht doch eine Lösung?

  • Bei dem aktuellen Stand, ist autotimer für mich fast nicht zu benutzen. Das Einfrieren ist so nervend, dass ich mittlerweile alle Einträge im autotimer deaktiviert habe.


    Um dennoch irgendeinen Nutzen aus dem Plugin zu ziehen, aktiviere ich derzeit spätestens alle 2-3 Tage (dank auf der auf unsinnge Weise kastrierten EPG-Daten der privaten Sender ) alle meine autotimer einmalig, lasse die Timerliste aktualisieren und deaktiviere diese dann wieder. Das ist aber umständlich und extrem nervend.


    Ist es denn nicht möglich die automatische Aktualisierung in Threads zu deaktivieren und das als alternative zeitgesteuert anzubieten?

  • Klar kann man das, wenn man AutoTimer mit EPGRefresh kombiniert und EPGRefresh so einstellt, dass nach dem Refresh Autotimer aktualisiert wird.

    DM8000, 2x DM500HD

    • Offizieller Beitrag

    Hi,


    ich habe mir das mal angesehen und eventuell habe ich einen relativ simplen Fix für die Probleme.


    Wenn jemand die Locks relativ häufig hat und gerne mal etwas testen möchte, soll er hier mal bescheid geben.
    Ich werde den entsprechenden Personen dann eine geänderte Datei zukommen lassen mit sie dann testen können/sollen/dürfen :).