eFilewatcher: Fehler beim Beenden von Enigma2

  • Ich habe mir einen eFilewatch in ein Plugin eingebaut und überwache das Verzeichnis /tmp. Nun führt das aber zu Problemen beim Beenden von enigma2:

    Code
    Jul 13 18:02:35 dm900 enigma2[598]: [eFileMonitor] File Watcher stopped
    Jul 13 18:02:35 dm900 enigma2[598]: c++ exception (std::bad_alloc)
    Jul 13 18:02:35 dm900 enigma2[598]: 0xb13a9030(sp=0xbeec0ee0)


    Es werden auch noch ganz viele eFileEvent ausgelöst, obwohl der eFilewatch bereits beendet ist.


    Der Fehler ist weg, wenn ich die Überwachung auf /tmp/ ändere. Aber dann kriege ich keine Events mehr...könnt ihr euch das mal anschauen? Stand ist 4.3.2r5.


    Könnt ihr euch das mal anschauen?

    Gruss
    Dre


    Boxen (im Einsatz): DM920, DM900, DMOne
    Developer Project Merlin - we are OpenSource

    • Offizieller Beitrag

    Hmm solange bis da ggf. jemand geschaut hat...


    Hast Du mal versucht den Filewatch beim e2 runterfahren zu löschen? Also es gibt ja den PluginDescriptor der auch beim beenden aufgerufen wird.



    also da wo jetzt das cec.poweroff gemacht wird könntest du quasi den filewatch auf NULL setzen... und die callbacks ggf vorher alle nullen...


    cu

  • None hatte ich schon versucht. NULL noch nicht. Das kann ich mal noch machen. Also ich mache schon ein stopWatching() beim Herunterfahren. Ich mach das bei reason == 1.


    Callback setze ich auf None.

    Gruss
    Dre


    Boxen (im Einsatz): DM920, DM900, DMOne
    Developer Project Merlin - we are OpenSource

  • Jep, den setze ich bereits auf None. Ich vermute, dass der eFileMonitor nicht beendet wird. Aber das habe ich ja nicht unter Kontrolle, da ihr das im Core macht.

    Gruss
    Dre


    Boxen (im Einsatz): DM920, DM900, DMOne
    Developer Project Merlin - we are OpenSource

  • Also ich hab jetzt nochmal ein bisschen weiter geforscht.


    Nehmen wir an, ich mache einen eFileWatch auf /tmp/updates.txt, dann kann ich problemlos einen Reboot machen. Nichts hängt. Allerdings wird der eFileWatch nur erstellt, wenn die Datei updates.txt bereits vorhanden ist. Sonst gibt es: [eFileWatch] ERROR watching /tmp/updates.txt. Warum muss das File bereits vorhanden sein? Theoretisch kann ich ja auch einen FileWatch auf eFileEvent.CREATE machen.


    Wird das eFileEvent ausgelöst, und ich mache event.getFullPath(), dann kriege ich /tmp/updates.txt/ zurück. D.h. ich muss immer ein [:-1] machen. Dasselbe passiert übrigens, wenn ich den eFileWatch auf /tmp mache. Dann kriege ich auch ein /tmp//updates.txt zurück. Somit wird der FileWatch also immer um einen Forward Slash ergänzt.

    Gruss
    Dre


    Boxen (im Einsatz): DM920, DM900, DMOne
    Developer Project Merlin - we are OpenSource

  • dre

    Ich nutze im SkinReloader ja auch einen FileWatcher für 2 Verzeichnisse, welchen ich im SESSIONSTART per wakeupfnc stoppe.

    Da habe ich noch nie Probleme gehabt, dass da irgendwas hängt beim Beenden von e2.


    Wie merkst du das ?

    Ich starte den FileWatcher und mache danach einen GUI-Neustart. Da geht das ohne Probleme.


    Hab ich dein Plugin evtl. in Nutzung ?

    Beim GUI-Neustart sehe ich beim Shutdown sowas:

    Code
    [eFileWatch] Not watching /tmp anymore
    [eFileMonitor] File Watcher stopped

    Nicht, dass du da auch das Problem hast, wenn mehrere Watcher den gleichen Folder überwachen.

    Evtl. hängt da noch ein anderer Watcher auf /tmp

    Da scheint e2 ein Problem zu haben, bei mehrfachen Watchern.

    Ging ja bei gutemine auch nicht, dass man 2 Filewatcher auf das gleiche File gesetzt hat.

    Da sind dann beide Watcher offensichtlich "gestorben".

    Gruß Sven (aka Dreamy)


    DM920 mit unstable OE2.5 DP
    One mit unstable OE2.6 DP

  • Ich schau mal. Liegt vielleicht daran. Ich habe ein dict von Referenzen, da ich dynamisch Filewatcher aufsetze.


    Das Plugin kannst du nicht haben. Ich hab das nicht veröffentlicht wegen des Problema

    Gruss
    Dre


    Boxen (im Einsatz): DM920, DM900, DMOne
    Developer Project Merlin - we are OpenSource

  • Reichi

    Kannst du dann auch mal schauen, ob man tatsächlich nicht 2 verschiedene Wachter für das gleiche File starten kann ?

    Wenn man das macht, reagiert keiner der beiden Watcher auf Änderungen am zu überwachenden File.


    Und gibt es die Möglichkeit, dem Watcher eine Liste zu übergeben?

    Also z.B. mehrere Files oder mehrere Folder.
    Bei meinen Versuchen bin ich damit gescheitert :winking_face:

    Gruß Sven (aka Dreamy)


    DM920 mit unstable OE2.5 DP
    One mit unstable OE2.6 DP

  • Vielen Dank für den Fix schon mal. Liste sehe ich auch nicht als notwendig an. Ich hab bei mir eine for-Schleife und einen dict. Da stelle ich dann sicher, dass nur einmal ein Filewatch auf das Verzeichnis erstelle. Beim FileEvent weiss ich dann ja, welches File ausgelöst hat.

    Gruss
    Dre


    Boxen (im Einsatz): DM920, DM900, DMOne
    Developer Project Merlin - we are OpenSource

  • Reichi

    Ok, kein Problem.

    War ja nur so ein Gedanke, dass vielleicht nur meine Versuche mit der Liste falsch waren :winking_face:

    Ich brauche es auch nicht wirklich, geht ja auch so :thumbs_up:


    Hast du das mal probiert, wenn man 2 watcher auf das gleiche File setzt?

    Da scheint die Überwachung dann nur für den zuerst gestarteten Watch zu greifen.

    Dass beide sterben konnte ich jetzt beim Test nicht mehr nachvollziehen.


    Anbei mal ein Test-Plugin.

    Je nachdem welchen Watcher man zuerst startet, der bekommt die Events.

    Der danach gestartete Watcher hat zwar einen log-Eintrag beim Start, bekommt aber keine Events.

    ( es wird dabei die test.txt im Pluginpfad überwacht)


    In einem eigenen Plugin könnte man das ja irgendwie umgehen/lösen.

    Wenn man aber ein File überwachen will, was evtl. auch schon durch ein anderes Plugin überwacht wird, wird es schwierig :winking_face:


    Wenn es nicht geht, ist auch nicht schlimm.

    Man muss es dann nur wissen, wenn man mal auf dieses Problem stößt :winking_face:

  • Ja, es geht ja auch um Files :winking_face:


    Edit:

    Komischerweise geht der gleiche Folder im Test-Plugin auch nicht.

    Selbst /tmp wird nicht überwacht, obwohl im log der Eintrag für den Start angezeigt wird :thinking_face:


    Sehr komsich.

    Gruß Sven (aka Dreamy)


    DM920 mit unstable OE2.5 DP
    One mit unstable OE2.6 DP

    2 Mal editiert, zuletzt von Sven H ()